Комментарии 29
Этот урок поможем вам познакомиться с Yii2
По большей части, ActiveRecord осталась нетронутой.
Почему AR в женском роде?
Треш…
if ($id === NULL)
{
Yii::$app->session->setFlash('PostDeletedError');
Yii::$app->getResponse()->redirect(array('site/index'));
}
$post = Post::find($id);
if ($post === NULL)
{
Yii::$app->session->setFlash('PostDeletedError');
Yii::$app->getResponse()->redirect(array('site/index'));
}
такие вещи лучше в ПМ. Статья исправится, а комментарии остаются
Наверняка потому, что «запись».
Спасибо, исправил. Самое начало и проглядел.
Хм, вообще в репозитории Yii2 есть приложение тестовое «app» оно на порядок лучше чтоли)) ну и сейчас говорить о CRUD когда нету базовых виджетов еще, я думаю рано, там например описан метод $this->populate() контроллера, и т п, подредактируйте чтоли статью, а то она совсем ни о чем новом не рассказывает.
В статье есть плохие советы и неточности.
1. Не используйте latin1. UTF нашё всё.
2. model в моделях AR переопределять не нужно. Откуда этот метод взялся не ясно…
3. «По большей части, ActiveRecord осталась нетронутой». Переписали только несколько раз с нуля, а так не тронули… ага.
4. Выборку поста надо делать так:
5. В view забыли заэскейпить вывод. Так делать не стоит.
6.
7. Про уникальный ключ тоже забавно. Не сделали автоинкремента и жалуются…
8. Бросать 404 в случае не переданного ID не надо. Нужно просто убрать значение по умолчанию из сигнатуры метода.
1. Не используйте latin1. UTF нашё всё.
2. model в моделях AR переопределять не нужно. Откуда этот метод взялся не ясно…
3. «По большей части, ActiveRecord осталась нетронутой». Переписали только несколько раз с нуля, а так не тронули… ага.
4. Выборку поста надо делать так:
$data = Post::find()->all();
5. В view забыли заэскейпить вывод. Так делать не стоит.
6.
populate
работает, просто массовое присвоение по умолчанию не работает без описаноя валидаторов в модели.7. Про уникальный ключ тоже забавно. Не сделали автоинкремента и жалуются…
8. Бросать 404 в случае не переданного ID не надо. Нужно просто убрать значение по умолчанию из сигнатуры метода.
Да, инкремент вообще порадовал. Я задумался даже не шутка ли это.
Хотя и работа с датами тоже на уровне.
Похоже с mysql автор еще не разобрался :)
Хотя и работа с датами тоже на уровне.
Похоже с mysql автор еще не разобрался :)
Статья в целом вообще странная, как и стиль изложения автора. Но раз уж появилась в wiki на офф. сайте — я решил перевести.
Про ключ смешно. Я сразу поглядел sql, воспроизвёл у себя и удивился, что автор даже не подумал в эту сторону
7. Про уникальный ключ тоже забавно. Не сделали автоинкремента и жалуются…
Про ключ смешно. Я сразу поглядел sql, воспроизвёл у себя и удивился, что автор даже не подумал в эту сторону
Пока еще
zii.widgets
в yii2
нет?Только у меня yii2.erianna.com переадресовывает на какую-то порнушную страницу ( qvaqa.com/?get=yii2 ) ??
Хотел пример посмотреть и очень удивился женским задницам.
Хотел пример посмотреть и очень удивился женским задницам.
Видимо я не один такой
Там xss уязвимость была, кто-то наверно написал редирект. UPD: убрал зловредный код
После symfony2 как то страшно выглядит. Хотя, наверное, более RAD.
Привычка…
Namespace с маленькой буквы выглядят как минимум странными (когда почти во всех библиотеках используются заглавные буквы)
не обязательно же, хоть и распространено:
github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md#underscores-in-namespaces-and-class-names
Underscores in Namespaces and Class Names
github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md#underscores-in-namespaces-and-class-names
Underscores in Namespaces and Class Names
\namespace\package\Class_Name => /path/to/project/lib/vendor/namespace/package/Class/Name.php
\namespace\package_name\Class_Name => /path/to/project/lib/vendor/namespace/package_name/Class/Name.php
Да и после Kohana 3.3 точно такие же впечатления, который раз захожу уже ГОТОВЫЙ, чтобы меня «уговорили» перейти на многими восхваляемый Yii и который раз испытываю непонятные чувства, наверное те, кто хвалят использую какой то другой Yii.
Одно только это:
Обращение без проверки существования элемента массива вместо привычного мне безопасного способа
А первое разочарование у меня было, когда обратились с вопросом поддержки и доработки внешне работающего большого проекта — при попытке запустить все это на локалке со включенными ошибками и предупреждениями вызвало сильный батхерт PHP.
Виждеты вроде бы вызывают положительные эмоции за сам факт существования, как и вообще любое повторное использование кода, но вот способ инициализации HTML сущностей меня не устроил, сейчас поясню о чем я
а хотелось бы чего то такого
хотя бы на основе pear.php.net/package/HTML_Common2
Поясняю, зачем мне понадобился chainable-вызов — для возможности частичной, кусочной инициализации в зависимости от параметров. Пример аналог — SQL-запрос, собираемый говнокодом или ActiveRecord, который собирает запрос по кусочкам.
Одно только это:
$model->title = $_POST['Post']['title'];
чего стоит. Обращение без проверки существования элемента массива вместо привычного мне безопасного способа
$model->title = Arr::path($_POST, 'Post.title', 'default value');
А первое разочарование у меня было, когда обратились с вопросом поддержки и доработки внешне работающего большого проекта — при попытке запустить все это на локалке со включенными ошибками и предупреждениями вызвало сильный батхерт PHP.
Виждеты вроде бы вызывают положительные эмоции за сам факт существования, как и вообще любое повторное использование кода, но вот способ инициализации HTML сущностей меня не устроил, сейчас поясню о чем я
<?php echo Html::a('Delete', array('site/delete', 'id' => $post->id), array('class' => 'btn btn-danger')); ?>
а хотелось бы чего то такого
<?php $a = Html::a();
$a->setContent('Delete')
->setUrl(array('site/delete', 'id' => $post->id))
->setClass('btn btn-danger');
$echo $a;
?>
хотя бы на основе pear.php.net/package/HTML_Common2
Поясняю, зачем мне понадобился chainable-вызов — для возможности частичной, кусочной инициализации в зависимости от параметров. Пример аналог — SQL-запрос, собираемый говнокодом или ActiveRecord, который собирает запрос по кусочкам.
Мало того, что не AUTO_INCREMENT, так и его эмуляция кривая — не устойчивая к конкурентным запросам.
Это только я при установке не обнаружил файл yiic.php? Ставил в итоге так, может кому пригодится:
1. Скачал и распаковал архив с yii2 в любой каталог
2. Скопировал тестовое приложение из
3. Скопировал
4. Закомментировал строчку в
5. Смотрим требования:
localhost/basic/requirements.php
6. Смотрим, что получилось:
localhost/basic/www/
1. Скачал и распаковал архив с yii2 в любой каталог
path_to_yii2
.2. Скопировал тестовое приложение из
path_to_yii2/apps/basic
в path_to_web_projects
.3. Скопировал
path_to_yii2/framework/yii
в path_to_web_projects/basic/vendor/yiisoft/yii2
.4. Закомментировал строчку в
path_to_projects/basic/www/index.php
://require(DIR . '/../vendor/autoload.php');
5. Смотрим требования:
localhost/basic/requirements.php
6. Смотрим, что получилось:
localhost/basic/www/
Странно чем автору не угодил DataProvider, не вижу смысла дёргать всё сразу…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Создание простого CRUD-приложения с помощью Yii2