|
|||||||
Краткая справка по фреймверку Yii2 - Оформление контроллеров, видов, моделей
Время создания: 05.08.2017 23:00
Автор: Xintrea
Текстовые метки: фреймверк, Yii2, основы, документация, справка, модель, вид, контроллер
Раздел: Компьютер - Программирование - Язык PHP - Yii2
Запись: xintrea/mytetra_syncro/master/base/1501963238xdua4ogo1d/text.html на raw.github.com
|
|||||||
|
|||||||
Эту справку я пишу для себя, чтобы быстро вспоминать как устроен фреймверк Yii2. Как формируется URL, где прописывается контроллер и экшен Пример URL (пока без ЧПУ): mysite.local/web/index.php?r=site/hello здесь:
Как формируется класс контроллера, как оформляется экшен Файл контроллера должен располагаться и называться так (относительно корня сайта): /controllers/SiteController.php Класс контроллера унаследуется от стандартного класса контролллера. Поэтому, в php-файле контроллера обычно прописывается следующее пространство имен и следующие используемые определения (необходимый минимум): namespace app\controllers; use yii\web\Controller; В файле SiteController.php должен быть класс контроллера, определение которого выглядит так: class SiteController extends Controller { ... } Экшен - это публичный метод контроллера. Его определение выглядит так: public function actionHello() { ... } Или, если метод принимает параметр, то описание метода принимает такой вид: public function actionHello($message='') { ... } О том, как передавать значение в параметр метода, написано чуть ниже. Как вызывается вид (view) Если приложение сайта построено на стандартном (basic) примере, то сайт работает на основе одного main-шаблона (layout). То есть, для всех страниц сайта применяется один и тот же шаблон. И экшен вставляет результат своей работы в одно и то же место основного шаблона (обычно через печать переменной content). Внутра экшена, генерация содержимого страницы происходит через метод render(): public function actionHello($message='') { return $this->render('hello', ['message'=$message]); } Где:
Следует обратить внимание, что у одного контроллера практически всегда несколько экшенов, и соответственно для каждого экшена обычно используется отдельный вид. Поэтому фреймверк требует, чтобы виды помещались в отдельный каталог, имя которого соответствует имени контроллера (с маленькой буквы), в данном случае это каталог /views/site. Как передается параметр в контроллер Параметр в контроллер можно передать через URL. Выглядит это так: mysite.local/web/index.php?r=site/hello&message=Hi Кстати, если нужно передать строковый параметр с пробелом, можно воспользоваться синтаксисом с плюсиком: mysite.local/web/index.php?r=site/hello&message=Hi+guys Внимание! При любом виде передачи параметра от пользователя (Get/Post/Socket...), нельзя его использовать в явном виде без предварительной проверки и фильтрации, чтобы пользователь не смог совершать атаки типа SQL-инъекции, не мог внедрить JavaScrip в чистом виде для межсайтового скриптинга (XSS) и т. д. Как создается класс модели Модель является классом, который представляет из себя абстракцию, позволяющую работать с объектами сайта, которые имеют свое состояние и даже способны хранить свое состояние. Поэтому, модели используются в следующих случаях:
Файлы моделей располагаются в каталоге /models. Пример класса модели: namespace app\models; use Yii; use yii\base\Model; class ContactForm extends Model { public $name; public $email; ... } |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|