2015-05-12 2 views
0

На самом деле после создания контроллера, когда я пытаюсь получить доступ через r=kandyusers он бросает ошибку 404, но его прекрасно работать с r=site и один, что я хотел бы указать в моем падла генератор есть путь просмотра, не знаю почему. Но там, где те, которые я видел в учебниках по YouTube, нет такого элемента.CRUD генерироваться контроллеры и его действия не называются yii2 расширенный

screen shot of crud generator

ответ

1

Вы должны просто попробовать kandy-users вместо kandyusers

Подробнее: Controller class naming

имена классов контроллера могут быть выведены из идентификаторов контроллера в соответствии с следующими правилами:

  • Поверните первую букву в каждом слове, разделенном тире, в верхний регистр. Обратите внимание, что если идентификатор контроллера содержит косые черты, это правило только применяется к части после последней косой черты в ID.
  • Удалите черточки и замените любые косые черты обратной косой чертой.
  • Добавить суффикс-контроллер.
  • И добавьте пространство имен контроллера.

И о пути представления в ГИИ, вы должны попробовать с @backend/views/kandy-users

+0

почему @ Серверные/просмотров/Канди-пользователей требуется, который не был там в версии Yii 1 – akhil

+0

Это не требуется, но если он не установлен, он будет по умолчанию '@ app/views/ControllerID', как в yii1 – soju

0

Я попробовал генератор кода GII в Yii2 передового образца приложения и я видел, он создал все файлы в зоне «во внешнем интерфейсе» ,

Он также создает представления под папкой frontend/web, которая отличается от того места, где контроллер вызывает представление.

Я рекомендую вам проверить каждый маршрут папки/файла, указанный в опции «Предварительный просмотр» Gii, и как только вы достигнете желаемой конфигурации папки, проверьте, где находится контроллер, просматривающий представление.

Возможно, вам нужно будет добавить это предложение к вашему сырого класса контроллера, чтобы Yii знать здесь желаемый вид, например, в UserCrudController я имею вид под падла папку /:

public function getViewPath() 
{ 
    return Yii::getAlias('@frontend/views/crud/User'); 
} 
0

Я нахожу это довольно запутанным, поэтому я подготовил чит-лист. Я настраиваю модуль для каждой таблицы, поэтому я могу использовать Gii CRUD для администратора. Я использую расширенную тему Yii2 и размещаю модули под бэкэнд.

Обратите внимание, что контроллер идентификаторов должны быть в нижнем регистре:

По умолчанию идентификаторы контроллера должны содержать только эти символы: латинские буквы в нижнем регистре, цифры, подчеркивание, дефиса и слеша. Например, статья и пост-комментарий являются действительными идентификаторами контроллера, а статья ?, PostComment, admin \ post - нет.

стол с одним словом, как сообщения (лучше иметь его в множественных числах для Gii), прост.

для таблиц с большим количеством слов, как post_topic есть по крайней мере два способа:

1 - использовать одно слово, как posttopic (все в нижнем регистре)

2 - использовать имя модуля совпадает с именем таблицы post_topic. Просто имейте в виду, что, когда Gii говорит вам, чтобы вы ввели в свой раздел конфигурационных файловых модулей 'post_topic', вы действительно должны использовать 'post-topic'. Этот параметр не является опрятным (используется post_topic для папки модуля, пост-тема для папки просмотра, PostTopic.php для файла).

Я буду рад услышать, есть ли у кого-то лучшее решение, поскольку этот пункт недостаточно документирован, и все примеры используют одно слово.

Так вот мои настройки (показывая вариант 2 мульти слов таблицы)

for one word tables: 
module generator 
---------------- 
module class:  backend\modules\posts\Module 
module id:   posts 
        update in common\config\main.php 

model generator 
--------------- 
table name:   posts 
model class:  Posts 
namespace:   backend\modules\posts\models 
Enable I18n:  checked. Message category: app 

CRUD generator 
-------------- 
Model class:  backend\modules\posts\models\Posts 
Search model class: backend\modules\posts\models\PostsSearch 
Controller class: backend\modules\posts\controllers\PostsController 
View path:   @backend/modules/posts/views/posts 
Enable I18n:  checked. Message category: app 
Enable pjax:  checked 

need to change Users::className() in the models\Posts.php 
\amnah\yii2\user\models\User::className() 

Access the crud page: www.example.com/backend/web/posts/posts 


or for two or more words tables: 
module generator 
---------------- 
module class:  backend\modules\post_topic\Module 
module id:   post_topic 

Gii say to use:  'post_topic' => ['class' => 'backend\modules\post_topic\Module',], 
But we should use: 'post-topic' => ['class' => 'backend\modules\post_topic\Module',], 

model generator 
--------------- 
table name:   post_topic 
model class:  PostTopic 
namespace:   backend\modules\post_topic\models 
Enable I18n:  checked. category: app 

CRUD generator 
-------------- 
Model class:  backend\modules\post_topic\models\PostTopic 
Search model class: backend\modules\post_topic\models\PostTopicSearch 
Controller class: backend\modules\post_topic\controllers\PostTopicController 
View path:   @backend/modules/post_topic/views/post-topic 
Enable I18n:  checked. category: app 
Enable pjax:  checked 

need to change Users::className() in the models\PostTopic.php 
\amnah\yii2\user\models\User::className() 

Access the crud page: www.example.com/backend/web/post-topic/post-topic 
Смежные вопросы