Evgeniy
там где он добавляется определен
$id_clients = Yii::$app->request->post('id_clients'); $model->talk = $text; $model->id_clients = $id_clients; $time = time(); $model->date = $time;
The Ant
госпади...
The Ant
помилуй )
The Ant
код модели на pastebin полностью пожалуйста
The Ant
и контроллера елси можно
Evgeniy
Да конечно. Секунду
👻
а ты точно постом шлешь ?
The Ant
а прям чувствую там хуйни наворочено ))
👻
:)
The Ant
$model = new Talks(); $model->id_clients = $id_clients; свойство точно есть? публичное?
Niko
@zheev А кто украл из модели Clients массив с атрибутами???
Niko
@zheev а где он?
Evgeniy
Niko
у тебя вообще ничего записаться не должно. нет ни публичных полей ни массива с атрибутами
Niko
public function attributeLabels() { return [ 'id' => 'ID', 'user_id' => 'User ID', 'status' => 'Status', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; }
Evgeniy
не знал что обязательно
Evgeniy
не помогло((
The Ant
сейчас попробую))
итак 1) убери date_call из стринг правил
The Ant
2) $clients->validate();
The Ant
вместо $model->validate();
Evgeniy
Оооо
The Ant
понятно почему пусто
The Ant
и смотрим ошибки
Evgeniy
понятно почему пусто
СпасиииииииииибооооооооооооооооооооооооооОО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Niko
@AlDexor ты чего? https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/structure-models.md#Определение-Атрибутов-
Evgeniy
Вроде заработало.
The Ant
а не сами атрибуты
Evgeniy
А вообще такой вариант это хорошо? или просто лучше из связанной таблицы брать?
Evgeniy
так че заработало чтоль
да)))) ты прям гений))
Niko
@AlDexor всегда думал, что мы атрибуты так задаем вместе с лейблами. Только что посмотрел и увидел, что атрибуты по умолчанию беруться из public function attributes() { return array_keys(static::getTableSchema()->columns); }
Alexey
Очень просто, задай в конфиге компонент db как анонимную функцию и оттуда в зависимости от поддомена кидай тот или инной коннект)
Спасибо, сделал пока просто на свичах switch ($_SERVER['HTTP_HOST']) { case 'domain1': $db = 'db'; $user = 'user'; $password = 'pass'; break; case 'domain2': $db = 'db'; $user = 'user'; $password = 'pass'; break; default: $db = 'db'; $user = 'user'; $password = 'pass'; } return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=' . $db, 'username' => $user, 'password' => $password, 'charset' => 'utf8', ], 'mailer' => [ 'class' => \common\modules\SwiftMailer::className(), 'viewPath' => '@common/mail', 'useFileTransport' => false, ] ], ];
Alexey
плохая реализация? ))
Roman
согласен 😊
Alexey
что не так то? :)
Roman
готовся, Алёша, сейчас троллить будут 😊
The Ant
что не так то? :)
все так, можно смелов best practices заносить ))
The Ant
да )
Alexey
почему плохо? объясните хоть
mr.
плохая реализация? ))
Кодстайл чуток адовенько, не люблю, когда в конфигах конструкции напихивают, сразу императивщины добавляет и менее читаемо. Хотя бы в анонимку оберните, ну же, ничего не стоит)
mr.
почему плохо? объясните хоть
Работает - хорошо, но смешивать императивный и декларативный стили так грубо - не айс для восприятия)
The Ant
нада будет новость на все города, и поедешь исправлять все базы )
Evgeniy
@AlDexor а где можно почитать, о том как правильно писать код, переменные и т.д.
Niko
@zheev http://php.net https://devionity.com/ru/
The Ant
http://www.phptherightway.com/ http://www.sqlstyle.guide/ru/
Evgeniy
The Ant
код стайл старайся выдерживать
Evgeniy
код стайл старайся выдерживать
Вот и надо посмотреть стиль кода понятный))
The Ant
http://www.php-fig.org/psr/
The Ant
ну и в целом тож http://www.php-fig.org/
Evgeniy
ну и в целом тож http://www.php-fig.org/
Всё)) класс)) спасибо большущее)
Alexey
Работает - хорошо, но смешивать императивный и декларативный стили так грубо - не айс для восприятия)
завернул в анонимку, но мне кажется опять не то сделал return [ 'components' => [ 'db' => function () { $connections = [ 'domain1' => ['db' => 'db', 'user' => 'user', 'password' => 'pass'], 'domain2' => ['db' => 'db', 'user' => 'user', 'password' => 'pass'], 'default' => ['db' => 'db', 'user' => 'user', 'password' => 'pass'] ]; $host = array_key_exists($_SERVER['HTTP_HOST'], $connections) ? $_SERVER['HTTP_HOST'] : 'default'; return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=' . $connections[$host]['db'], 'username' => $connections[$host]['user'], 'password' => $connections[$host]['password'], 'charset' => 'utf8', ]; }, ], ];
mr.
Alexey
а вы как предлагали?
mr.
Примерно как вы и сделали, только учтите, что в консольных приложениях стандартное поведение будет возвращать default всегда.)) Лучше всё же завязаться на Yii::$app->request->hostName http://www.yiiframework.com/doc-2.0/yii-web-request.html#$hostName-detail Тогда можно будет и тестами баловаться, конфигурируя реквест.
Ulugbek "Luke"
всем привет. <?= $form->field($model, 'work_days')->checkboxList(['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']) ?> у меня есть вот такой чекбокслист, как его взять как массив, чтобы обработать потом и сохранить как строку в массиве?
Alexey
но конект же происходит до инициализации приложения, в этот момент еще не достпно API фреймворка
Alexey
т.е. не конект, а конфигурирование
mr.
но конект же происходит до инициализации приложения, в этот момент еще не достпно API фреймворка
Компоненты Yii2 реализуют lazy init, т.е. компонент db в случае если будет задан через анонимную функцию, будет инициализирован по требованию, а в тот момент уже будет поднят инстанс приложения)
mr.
Т.е. вызов функции произойдет при первом обращение к сервис локатору за компонентом db
Alexey
ага, понятно, спасибо )
Ulugbek "Luke"
В смылсе как его взять в массив? 😁
нуу, как с чекбокслиста взять в массив и ПЕРЕДАТЬ в контроллер)
mr.
нуу, как с чекбокслиста взять в массив и ПЕРЕДАТЬ в контроллер)
work_days в моделе $model будет содержать ключи массива которые ты выбрал. Ты в load модели не умеешь?
Ulugbek "Luke"
work_days в моделе $model будет содержать ключи массива которые ты выбрал. Ты в load модели не умеешь?
Не, умею. Front-end валидация говорит что word_days должна быть строкой. Сейчас думаю в модели создать массив, чтобы с чекбокслиста туда положить, потом в контроллере обработать этот массив в строку work_days и сохранить уже