#codeigniter #codeigniter-4
#codeigniter #codeigniter-4
Вопрос:
Я только что попал в CI4 из фона CI3, но мне сложно получить маршруты для отображения соответствующего представления. Несмотря на то, что я правильно написал код в контроллере для загрузки представления, он всегда возвращает index.php несмотря ни на что, вместо правильного представления, даже когда я ввожу несуществующий маршрут. Страница 404 также не отображается.
Вот мой код контроллера:
<?php
namespace AppControllers;
class Shop extends BaseController
{
public function index()
{
return view('shop');
}
}
Комментарии:
1. Вы пробовали
echo view('shop');
? Вы не должны возвращать его: codeigniter.com/user_guide/general/common_functions.html#view2. Это тоже не работает. Я заметил, что страница все еще отображается index.php даже для несуществующих маршрутов вместо отображения страницы 404.
3. @VilLar да, он может вернуть представление. В CI 4 вы можете сделать и то, и другое. При загрузке ci4 представление по умолчанию возвращается без эха. github.com/codeigniter4/CodeIgniter4/blob/4.1/app/Controllers /…
Ответ №1:
РЕШЕНО!
Я понял, что проблема заключалась в том, что модуль перезаписи apache был отключен по умолчанию при запуске sudo a2query -m rewrite
, поэтому мне пришлось включить его, запустив sudo a2enmod rewrite
. Если у вас такая же проблема, пожалуйста, убедитесь, что ваш модуль перезаписи включен.
Комментарии:
1. Или, если вы по какой-либо причине не можете включить mod_rewrite на своем сервере, просто удалите .htaccess, который поставляется с codeigniter, и убедитесь, что ваше приложение настроено на использование index.php досье. github.com/codeigniter4/CodeIgniter4/blob/develop/app/Config/… Таким образом, вам не нужен mod_rewrite, но ваши URL-адреса будут выглядеть так foo.com/index.php/controller/method/param