
Vano
25.03.2018
10:48:23
./yii list
там и смотришь
https://www.yiiframework.com/wiki/819/php-built-in-server-integration

Константин
25.03.2018
10:55:37
спасибо. сейча изучу

Google

Константин
25.03.2018
12:12:56

Serge
25.03.2018
12:19:56
Подскажите, как в Yii2 один раз определить где-то кусок html-кода и потом в разных шаблонах его использовать? Примерно как в MODx чанки. :)

Vano
25.03.2018
12:20:46

Serge
25.03.2018
12:26:55
хм, то есть если у меня есть три лейаута, где в футере есть одинаковый блок счетчиков для всех лейаутов, то мне надо создать файл например counters.php, прописать там счетчики и рендерить в каждом лейауте? <?=$this->render('counters.php')?>

Vano
25.03.2018
12:29:27
https://yiiframework.com.ua/ru/doc/guide/2/structure-views/
прочти хорошенько

Jas
25.03.2018
12:43:48

Serge
25.03.2018
12:45:13
<?= \Yii::$app->view->renderFile('@app/views/layouts/counters.php'); ?> вроде это то что мне нужно!

Сергей
25.03.2018
12:48:34
Добрый день!
Есть ActiveForm и внутри неё часть полей хочу загружать ajax-ом.
Как мне в экшене, который ajax-ом вызывается сгенерить мои поля?
$form = ActiveForm::begin();
$form->field(...);
ActiveForm::end();
Генерит ещё и <form, а как этого избежать не пойму.

Vadim
25.03.2018
13:07:37
Подскажите. При сохранении выдается ошибка:
[type] => Array
(
[0] => The combination "filter"-"516952-516963-517009"-""-""-"36" of Type, Min Childs, City, Region and Count has already been taken.
)
Это ошибка индекса, как я понял. Но у меня нет уникальных индексов в базе.

PowerAxis
25.03.2018
13:09:07

Сергей
25.03.2018
13:09:50

PowerAxis
25.03.2018
13:11:35
Ну у меня почти всегда эта задача связана с тем, что полей этих может быть n штук и все равно имя формы получится что-то типа OptionForm[name][0]

Google

PowerAxis
25.03.2018
13:11:56
Все равно его вручную формировать

Сергей
25.03.2018
13:13:06
Сделал в итоге с костылём... не знаю как проще (
ob_start();
$form = ActiveForm::begin();
$html = (new self())->render('_data_' . $key, [
'form' => $form,
'model' => $model,
]);
ActiveForm::end();
ob_get_clean();
return $html;

PowerAxis
25.03.2018
13:14:17
А как ты делаешь, если поле, например, хранит данные в Json? И вывести потом нужно n инпутов

Сергей
25.03.2018
13:15:00

Vadim
25.03.2018
13:15:22
И так постоянно

Сергей
25.03.2018
13:15:51

PowerAxis
25.03.2018
13:16:04
Ну, к примеру, у тебя одинаковых полей много в форме и ты их в Json сохранил

Vadim
25.03.2018
13:16:11
Может этот феномен как-то научно называется уже?

PowerAxis
25.03.2018
13:16:45

Эд
25.03.2018
13:16:50
И так постоянно
Только не обращайся теперь с проблемой сразу, ебаться сутки все равно придется))

PowerAxis
25.03.2018
13:16:56
Резиновая уточка

Vadim
25.03.2018
13:17:11
Резииновая уточка?
Это что-то про Медведева?

Сергей
25.03.2018
13:17:34

Vadim
25.03.2018
13:18:28

Сергей
25.03.2018
13:18:57
Оно работает только когда упёрся сам, а не сходу начал писать

Vadim
25.03.2018
13:21:49
Нашел вот эту страницу: https://github.com/yiisoft/yii2/issues/11322
Собственно, ответа там нет и вопрос другой. Но в голову пришла мысль посмотреть модель.
Оказывается, она была отгенерена через gii с уникальным индексом когда-то давно.

Google

Vadim
25.03.2018
13:23:39
Ну, то есть, оно как-то само всё, как по волшебству )

PowerAxis
25.03.2018
13:24:12
Резииновая уточка?
https://ru.m.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D1%83%D1%82%D1%91%D0%BD%D0%BA%D0%B0

Сергей
25.03.2018
13:24:19
У меня бывало, что думаешь/гуглишь и ничего. Потом пишешь в чат, делаешь следующий запрос и находится решение.

PowerAxis
25.03.2018
13:24:29
Читай выше

Vadim
25.03.2018
13:25:33
Читай выше
> Считается, что правильная формулировка вопроса содержит как минимум половину ответа, а также это даёт толчок мыслям, направляя их в нужное русло
Ну да, похоже на правду.

PowerAxis
25.03.2018
13:36:14
Я разделяю хранение и формы.
В форме уже хранится в виде массива.
Можешь объяснить?
Вот, к примеру, у меня задача - https://imgur.com/oAKXi4X
таких строк может быть много, и я просто дублирую инпут формы с именем типа
ProductForm[video][0]
....
ProductForm[video][3]
и закидываю в БД в одно поле как json.
Но при редактрировании нужно декрдировать json и вывести все эти поля... как ты такое средставми фреймворка делаешь?


Сергей
25.03.2018
13:36:49
У меня как раз есть с видосами, ща)
Можешь объяснить?
Вот, к примеру, у меня задача - https://imgur.com/oAKXi4X
таких строк может быть много, и я просто дублирую инпут формы с именем типа
ProductForm[video][0]
....
ProductForm[video][3]
и закидываю в БД в одно поле как json.
Но при редактрировании нужно декрдировать json и вывести все эти поля... как ты такое средставми фреймворка делаешь?
Форма (название видео + ID ролика на ютубе):
class VideosForm extends Model
{
public $youtubeId = [];
public $label = [];
public function __construct(Product $product = null, array $config = [])
{
if ($product) {
foreach ($product->videos as $video) {
$this->youtubeId[] = $video->youtubeId;
$this->label[] = $video->label;
}
}
parent::__construct($config);
}
public function rules(): array
{
return [
[['youtubeId', 'label'], 'each', 'rule' => ['filter', 'filter' => 'trim']],
['youtubeId', 'each', 'rule' => ['required']],
];
}
public function attributeLabels()
{
return [
'youtubeId' => 'ID ролика',
'label' => 'Название',
];
}
public function toProduct(Product $product)
{
$videos = [];
foreach (ValueHelper::assertArray($this->youtubeId) as $n => $youtubeId) {
$videos[] = ProductVideo::make([
'youtubeId' => $youtubeId,
'label' => ArrayHelper::getValue($this->label, $n),
]);
}
$product->videos = $videos;
}
}
Суть в том, что в конструкторе форма наполняется, а в функции toProduct выгружается в объект.


PowerAxis
25.03.2018
13:39:14
ну я понял, ты отдельно форму делаешь в таком случае

Сергей
25.03.2018
13:39:24
Да... у меня всегда отдельные формы
в чистую AR как форму не пользую

PowerAxis
25.03.2018
13:39:51
нет, я тоже в данном случае не использовал AR как форму
просто поле с видосами относится, например, к свойству товара
и мне кажется оверхэдом делать для поля отдельную форму

Сергей
25.03.2018
13:41:15
Ну незнаю, у меня для многих полей отдельные модели, которые потому с помощью CompositeForm собираются в одну форму. Удобно - нет каши, все модели простые, а сам продукт сложный)

PowerAxis
25.03.2018
13:41:47
ну, возможно, это и правильное решение. я понял, спасибо

Сергей
25.03.2018
13:42:50

PowerAxis
25.03.2018
13:43:46
у елисеева такое видел

Sergey
25.03.2018
13:44:06
Гайс может кто помочь?
Uncaught Error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in ..
Уже пытался в ini подключать и вот так
extension=pdo_mysql.so
и вот так
extension=php_pdo_mysql.so

Сергей
25.03.2018
13:44:42

Google

PowerAxis
25.03.2018
13:45:50
я попробую следующий раз такой вариант

Сергей
25.03.2018
13:46:12

Sergey
25.03.2018
13:46:47
убунту

Сергей
25.03.2018
13:47:09
А php_pdo_mysql.so точно есть?

Sergey
25.03.2018
13:47:28
да

PowerAxis
25.03.2018
13:48:29

Сергей
25.03.2018
13:48:55
да
Может лучше в php чатике спросить?
Думаю там быстрее ответят)(

PowerAxis
25.03.2018
13:58:17
А, ну тогда это не особо отличается от моего варианта

Konstantin
25.03.2018
14:54:22

mrG1K
25.03.2018
15:00:42
Подскажите как сделать условие on при leftJoin с несколькими условиями в массиве
Если юзаю массив то значения массива не преобразуются (название таблицы и тп) в запросе идут в '' , и ничего не джоиниться
в примерах лефт джоин юзают в строку ( но не хотелось бы (

Vano
25.03.2018
15:01:59

mrG1K
25.03.2018
15:03:50
https://i.g1k.ru/ZDRjNm.png
Формирует запрос вот так
https://i.g1k.ru/OWZiZD.png
т.е значения не прогоняются через преобразование таблиц с префиксом .. в итоге ничего не джоиниться

Vano
25.03.2018
15:05:28
Expression используй, тогда экранироваться не будет.

mrG1K
25.03.2018
15:06:46
Нуу даж не знаю как будет смотреться..
так то можно и в строку зафигачить то что сейчас есть добавить AND и оно вроде даже работает..
Но блин в доке написано что можно массив, и оно даже его юзает но както не оч(
https://i.g1k.ru/YjExND.png

Vano
25.03.2018
15:07:28
пару секунд погоди

Google

Vano
25.03.2018
15:11:48
не, все таки только строками
не нашел я другого решения

mrG1K
25.03.2018
15:29:44
Может кто знает?)
Судя по https://github.com/yiisoft/yii2/issues/11842#issuecomment-229024541
должно работать и в таком массиве.. Но не пашет(

Vano
25.03.2018
15:31:34
а ну пришли свой код
только не картинкой

mrG1K
25.03.2018
15:32:01
похоже решили это поведение не исправлять (
https://github.com/yiisoft/yii2/issues/7549
Добавили комментарий в код что это работает не так как ожидается и все
https://github.com/yiisoft/yii2/commit/e4dc2026bc3669cbc6f739f19de32c6a04d1a37f

Ad.x ??
25.03.2018
15:34:58
чтоб не батхертить, просто не делай этого

mrG1K
25.03.2018
15:35:33

Ad.x ??
25.03.2018
15:36:17
['order.UserId' => 'user.Id'] к такому. Сложно делать всегда в нижнем регистре и не выебываться?

mrG1K
25.03.2018
15:36:42
Это не мой тикет
По комменту я понял что искать справедливости не стоит и заюзал строку..

Ad.x ??
25.03.2018
15:39:49

mrG1K
25.03.2018
15:40:11
да там именно суть в том что массив и значения возвращаются как строка
Note that the array format of [[where()]] is designed to match columns to values instead of columns to columns, so
+ * the following would **not** work as expected: `['post.author_id' => 'user.id']`, it would
+ * match the `post.author_id` column value against the string `'user.id'`.
+ * It is recommended to use the string syntax here which is more suited for a join:

Ad.x ??
25.03.2018
15:47:40
точно не пашет... лол )
через экпрешен пашет... но пару условий + плейсхолдер пиздец будет ?
->leftJoin(['p' => Post::tableName()], [
'p.post_id' => new \yii\db\Expression(':post_id'),
], [
':post_id' => 40,
])
типа того ченить :D