#codeigniter #view
#codeigniter #Вид
Вопрос:
Я использую CodeIgniter и хочу загрузить представление, такое как:
$this->load->view('image/delete/' . $_POST['id'], $data);
$_POST[‘id’] является обязательным параметром моей функции ‘delete’ внутри моего контроллера ‘image’. Я бы подумал, что это будет работать нормально, но я получаю ошибку CI с указанием:
«Не удается загрузить запрошенный файл: image/delete/113.php «
Я не понимаю, почему CI добавляет «.php» в конец этого, неудивительно, что он не может найти этот файл. Что я делаю не так?
Комментарии:
1. Загрузка представления — это не то же самое, что загрузка URL. Представление — это файл, хранящийся локально на вашем жестком диске (ну, на серверах), и вы передаете в него данные через $data. Вы пытаетесь передать данные через URL, а PHP ищет фактический файл image/delete/113.php (автоматически добавляет .php к представлениям / контроллерам / моделям и т.д.)
Ответ №1:
В дополнение к ответу Ивана, то, что вы пытаетесь сделать, нарушает принцип MVC: разделение интересов.
Представления должны просто отображать данные, они никогда не должны получать функциональность, такую как удаление ресурсов.
Вместо загрузки представления вам нужно будет использовать redirect()
функцию в вспомогательном классе URL, чтобы перенаправить браузеру URL "image/delete/".$image_id
Затем, как предположил Иван, вам понадобится Image
контроллер с delete($id)
функцией. Эта функция удалит ваше изображение, а затем загрузит представление, указывающее, что ресурс был удален.
Комментарии:
1. Спасибо, это помогает — ха-ха, я подумал, что, возможно, «нарушаю принцип MVC», это меня не удивляет. Я знаю, что это для моей пользы, просто нужно привыкнуть к этому!
Ответ №2:
Расширение файла .php указывать не нужно, если вы не используете что-то другое, кроме .php.
Код в контроллере «image»:
public function delete($parameter=false)
{
some_delete_function($parameter);
//and load view
}
Ответ №3:
Похоже, вы пытаетесь использовать представление для загрузки URL / изображения / удаления / 113. Но он пытается загрузить представление ~ application / views /images /delete / 113 с вашего жесткого диска.
Я бы рекомендовал просто удалить изображение из вашего кода, возможно, создать библиотеку, если она сложная, или вспомогательную, если это не так, и вызвать ее из контроллера там.
Комментарии:
1. Невозможно ли загрузить представление, подобное: (‘controller / function /parameter’)?
2. Насколько мне известно, нет. Я не уверен, зачем вам это нужно. Если вы хотите удалить изображение, просто выполните команду «разорвать ссылку (filename)».