Ошибка 404 с исключением unknownclass в yii2

Я новичок в yii2. Я успешно извлек расширенный zip-шаблон yii2. настроили db и файл .htaccess.

При создании нового контроллера, модели и действия в контроллере и переходе к местоположению. Например: http://localhost/advanced/frontend/web/mysetofusers/signin.

Я сталкиваюсь с тремя проблемами. 1. пишет об ошибке 404. 2. говорит UnKnownClassException - т.е. невозможно найти mysetofusersController в файле frontendControllers \ mysetofusersController.php пространство имен отсутствует ?? даже если файл находится в папке и используется точное пространство имен. 3. Он всегда перенаправляет на сайт / страницу индекса, а не показывает mysetofusers / signin. На этот раз отладчик Yii не стал исключением.

a = Также обратите внимание, что я пытался создавать модели, используя как gii, так и расширенный класс Model.

Кажется, ничего не работает. Пожалуйста, помогите мне. Я застрял и не могу продолжать работу.

Спасибо:)


person DpGp    schedule 10.08.2015    source источник
comment
нужно ли начинать с расширенного шаблона? Настоятельно рекомендуется начать с базового, гораздо проще в настройке и освоении. Затем, когда ваше приложение почти готово, перемещение ваших моделей, контроллеров и компонентов в расширенную структуру будет вопросом копирования / прошлого и некоторых дополнительных конфигураций, необходимость которых вы уже понимаете.   -  person Salem Ouerdani    schedule 11.08.2015
comment
Это не. proj не мал, и поскольку у advanced была вся структура каталогов для backend / frontend / common, а asi планировал создать REST API, это было идеальным для использования расширенного шаблона. еще не пробовал с базовым. будет делать так. Однако, если у кого-то уже была эта проблема, дайте мне знать решение для нее. Спасибо!   -  person DpGp    schedule 11.08.2015
comment
конечно, я попробую тогда. Спасибо, салем :)   -  person DpGp    schedule 11.08.2015
comment
Привет, Салем, при использовании базового шаблона я также вижу ошибку 404. это что-то связано с urlManager. Например: MyListUsersController Я перешел по ссылке, которой вы поделились. И мой urlManager говорит, что это 'urlManager' = ›['enablePrettyUrl' =› true, 'enableStrictParsing' = ›true, 'showScriptName' =› false, 'rules' = ›[['class' =› 'yii \ rest \ UrlRule ',' controller '= ›' v1 / MyListUser '],' POST api / web / v1 /‹ controller: \ w + ›s '=›' ‹controller› / create ',   -  person DpGp    schedule 11.08.2015
comment
'api / web / v1 / ‹контроллер: \ w +› s' = ›'‹controller› / index', 'PUT api / web / v1 /‹ контроллер: \ w + ›/‹ id: \ d + ›' =› ' ‹Controller› / update ',' УДАЛИТЬ api / web / v1 / ‹контроллер: \ w +› / ‹id: \ d +› '= ›' ‹controller› / delete ',' api / web / v1 /‹ контроллер: \ w + ›/‹ id: \ d + ›'=›' ‹controller› / view ',' ‹контроллер: \ w +› s / create '= ›' ‹controller› / create ','‹ контроллер: \ w + ›/‹ id: \ d + ›/‹ действие: update | delete ›'=›' ‹controller› / ‹action› '],   -  person DpGp    schedule 11.08.2015
comment
и компонент модулей 'modules' = ›['v1' =› ['basePath' = ›'@ app / api / modules / v1', 'class» = ›' app \ api \ modules \ v1 \ MyListUser ']], Не могли бы вы помочь мне. структура папок такая же, как вы упомянули в образце ссылки.   -  person DpGp    schedule 11.08.2015


Ответы (1)


404 ошибки в Yii 2.0 обычно возникают из-за неправильных конфигураций urlManager или сервера.

Перед созданием модуля api убедитесь, что ваше приложение REST работает после выполнения официальные документы. Если нет, то, вероятно, проблема в конфигурации сервера.

Чтобы REST работал, необходимо включить красивые URL-адреса, настроив файл .htaccess (при использовании сервера Apache) следующим образом:

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

Затем вы можете перейти к реструктуризации приложения.

Это еще НЕ ЗАВЕРШЕНО, это рабочее репо, в котором вы найдите конфигурации, которые я использовал для api папка и компоненты, которые я использовал для web папка + два .htaccess файла в каждой из двух папок.

Я надеюсь, что это помогает.

person Salem Ouerdani    schedule 11.08.2015
comment
Я пытаюсь это сделать. Не могли бы вы сказать мне, нужно ли запускать команду curl, упомянутую в официальных документах. Если да, то как я могу проверить. Я использую ОС Windows. и я вижу, что там есть символ $. Это единственный способ проверить, работает ли остальное приложение? Пожалуйста, имейте в виду, что я совершенно не знаком с концепцией REST yii. - person DpGp; 12.08.2015
comment
Нет, команда curl - это всего лишь один из различных методов тестирования службы REST. Вы можете перейти прямо к ссылке http://localhost/users (или какому-либо другому пути вашего проекта) из навигатора. Вы должны увидеть данные, полученные из БД, в виде выходных XML-данных. Если у вас все получится, вы можете приступить к реструктуризации своего приложения. в противном случае проверьте настройки сервера (.htaccess). Не забудьте добавить s для множественного числа (например, если ваше название модели car, тогда ваш URL-адрес должен выглядеть как http://[path_to_project]/cars или, возможно, http://[path_to_project]/web/cars (в зависимости от вашего файла .htaccess)) - person Salem Ouerdani; 12.08.2015
comment
Привет Салем :) Протестировал .. ЙО !! Базовый yii работает нормально ... видимо, это из-за 'enableStrictParsing' = ›true, изменил его на false и после установки rewrite_module и добавления .htaccess в сеть Rest теперь действительно работает !! Теперь приступим к работе с модулем API. Престижность! - person DpGp; 12.08.2015
comment
Большой ! Если вам сейчас нужно протестировать свои данные с помощью вывода JSON, а не XML, и вы не хотите использовать curl, есть отличные расширения для навигатора, такие как postman, который можно использовать при тестировании REST. - person Salem Ouerdani; 12.08.2015
comment
Конечно. Я тестировал это в Почтальоне. он возвращает данные json. но похоже, что в yii он остается как XML-ответ oly evn после установки \ Yii :: $ app- ›response-› format = \ yii \ web \ Response :: FORMAT_JSON; или CJSON :: encode () - person DpGp; 12.08.2015
comment
Нет, это зависит от вашего запроса. Yii REST гибок. еще раз проверьте пример curl в кратком руководстве . запрос, содержащий Accept:application/json в своем заголовке, принесет вам результаты в формате json, а это не то же самое, что Accept:application/xml. Он будет отлично работать с любым фронтом, поддерживающим REST. - person Salem Ouerdani; 13.08.2015
comment
Да, я установил тип содержимого заголовка. Не понимаю, почему этого не было. Но да, теперь он возвращает данные JSON. Спасибо, Салем. Большая помощь :) - person DpGp; 15.08.2015
comment
Привет, салем, я тоже хотел узнать. как я могу опубликовать форму в остальном действии api. Или как я могу протестировать остальные api для создания записи в dn. Я знаю, что для этого мне нужно добавить строку запроса к URL-адресу. Как мне добавить его в api из формы отправки и как протестировать в почтальоне. здесь при вызове остального api с запросом в почтальоне он говорит 404. Нужен ли нам для этого менеджер URL-адресов. или создать актон с параметрами по умолчанию? - person DpGp; 15.08.2015
comment
Да, вам нужно настроить маршрутизацию приложения в urlManager[rules], объявив принятые глаголы, иначе Yii выдаст ошибку 404. Дополнительные сведения см. В REST Rooting - официальная документация Yii2. А что касается тестирования с помощью почтальона, то вот краткое видео-руководство. - person Salem Ouerdani; 15.08.2015
comment
Привет Салем Кердани, вы там. У меня проблема с API. Некуда обратиться за помощью. Могу я поговорить с вами по этому поводу? при переполнении стека? Проблемы здесь в том, что почтальон не дает никакого ответа, но говорит Плохой запрос. Хотя URL-адрес в браузере возвращает ответ JSON, который я отправляю из действия. Не могли бы вы дать мне знать, как узнать, есть ли у вас какие-либо идеи. Мои сомнения растут. Буду признателен, если я свяжусь с вами по поводу этих сомнений. Спасибо!! - person DpGp; 23.08.2015