Параметры CodeIgniter - невозможно загрузить запрошенный файл
У меня есть этот контроллер:
class Work extends MY_Controller {
public function assign($id) {
//validation checks
if ($this->form_validation->run() === FALSE) {
$this->load->view("work/assign/" . $id);
} else {
//success
}
}
}
А также вид на views/work/assign.php
У меня также есть следующий маршрут:$route['work/assign/(:any)'] = 'work/assign/$1';
Когда я иду в /work/assign/1
в моем браузере, и я получаю эту ошибку: Unable to load the requested file: work/assign/1.php
Я хочу, чтобы он отображал страницу с параметром 1
2 ответа
Вы получаете ошибку из-за неправильного параметра в view
вызов
$this->load->view("work/assign/" . $id);
так как ваш последний косой черты сказать CI, что это .php
и в вашем последнем косом $id=1
поэтому он ищет, чтобы загрузить 1.php
правильный способ загрузить view
и передайте свой идентификатор для просмотра, создайте массив, который содержит данные, которые вы хотите показать в представлении, затем вызовите view и передайте массив, ключи массива будут преобразованы в переменные с помощью CI
class Work extends MY_Controller {
public function assign($id) {
//validation checks
if ($this->form_validation->run() === FALSE) {
$data['id']=$id;
$this->load->view("work/assign" ,$data);
} else {
//success
}
}
}
В assign.php
просто эхо $id
и вы получите желаемый идентификатор
Загрузчик не заботится о ваших маршрутах, а кроме того:
$route['work/assign/(:any)'] = 'work/assign/$1';
... ничего не делает Этот код:
$this->load->view("work/assign/" . $id);
... всегда будет искать файл в APPPATH/views/work/assign/$id.php
который я предполагаю, не существует.
Вы хотите использовать второй параметр в view()
загрузить переменные, например:
$this->load->view("work/assign", array('id' => $id));
Это загрузит файл представления work/assign.php
и импортировать переменную $id
,