
Константин
24.08.2017
07:27:28
Кто в курсе, почему в yii считает нормально практикой отовсюду обращатся к сервис- провайдерам? Тразакции - сервис-провайдер, рандомная строка - сервис- провайдер, параметры локализации - сервис-провайдер ...

Alex
24.08.2017
07:53:50
Унификация доступа
Человек создает себе подобное
Мы за продуктами идем в розничный магазин, а не к производителю

Google

Yura
24.08.2017
08:18:15
Видимо хорошая практика

? ? ? Alex ? ? ?
24.08.2017
08:19:54
А что с зендом не так?

Yura
24.08.2017
08:20:15
Все так) сервис провайдеры тоже везде

Konstantin
24.08.2017
08:22:48

Stas
24.08.2017
08:30:48
кто работал в js с Ckeditor?

Dmitry
24.08.2017
08:32:52
много кто

SiZE
24.08.2017
08:33:01
уверен в этом

Dmitry
24.08.2017
08:33:06
Че за бред такие вопросы задавать?
соц опрос?
)))

SiZE
24.08.2017
08:33:22
Из серии "можно вопрос?"

Google

Dmitry
24.08.2017
08:33:54
?

SiZE
24.08.2017
08:33:58
или эти бесконечные темы "помогите"

Stas
24.08.2017
08:34:24
просто пробую вставить текст а эта зараза какого то лешего работает один раз из ста:
CKEDITOR.instances['articlemodel-text'].setData(123);
и законогмерности понять немногу

SiZE
24.08.2017
08:34:41
окей, держи нас в курсе

Stas
24.08.2017
08:34:57

Yury
24.08.2017
08:38:25
есть activeform в site/index.php, все работает, как только я выношу её в отедельный файл _callback.php и вызываю на том же месте где она находилась в индексе, получаю ошибку
exception 'yii\base\ErrorException' with message 'Call to a member function isAttributeRequired() on null' in D:\OpenServer\domains\uber\vendor\yiisoft\yii2\widgets\ActiveField.php:859
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
что за напасть такая?
вызываю путем <?= $this->render('_callback')?>
а, кажись понял
поделитесь советом плз, есть активформ обратной связи. кнопка что её вызывают весит в меню, тобишь в меин лейауте. нужно что бы экшн который обрабатывает форму вызывался на разных вьюшках, куда обработчик впихнуть, как такие проблемы решаются средствами yii2, что бы просто не копипастить форму и обработчик на всех вью, контроллерах

Vladislav
24.08.2017
09:00:43
в виджет
и везде виджет подключай

Yury
24.08.2017
09:01:19
понял, спасибо

Stas
24.08.2017
09:04:50

Crestoff
24.08.2017
09:13:33
Привет!
не в курсе почему в миграциях
$this->float(3) - не работает precision в mysql
какое бы я значение не ставил - в мускуле нет вообще precision

Yura
24.08.2017
09:14:17
$this->double(10,2)

Google

Yura
24.08.2017
09:14:32
или как-то так

Crestoff
24.08.2017
09:14:49
так по доке флоат тож работает

Yura
24.08.2017
09:15:41
ой фу бле
$this->decimal(10, 2)
вот так 100% прокатит

Crestoff
24.08.2017
09:16:11
ща попробую

Yura
24.08.2017
09:16:47
1 - precision, 2 - scale

Crestoff
24.08.2017
09:17:41
скале чо такое ?

Vladislav
24.08.2017
09:18:00
мастшаб

Crestoff
24.08.2017
09:18:32
переводить я умею
в контексте хранения данных что это значит

Konstantin
24.08.2017
09:19:04

Crestoff
24.08.2017
09:20:53

Yura
24.08.2017
09:21:14
перед - после вроде бы

Crestoff
24.08.2017
09:21:34
дада, как в флоате
просто я не знал что 2 число это скале

Yura
24.08.2017
09:21:46
ой ну точнее не так
общее - после запятой

Yury
24.08.2017
09:24:24

Konstantin
24.08.2017
09:24:39
форму включаешь в layout

Google

Konstantin
24.08.2017
09:25:04
блоку даешь display:none, показываешь кнопкой
обработчик формы в какой-то контроллер

Yury
24.08.2017
09:25:26

Konstantin
24.08.2017
09:25:27
можешь даже через pjax запилить, если тебе такое нравится
что тебе до разных вьюшек, если форма в лейауте?
а даже если нет, положи форму в отдельный файл, и подключай ее, где надо во вьюхах, через $this->render
кстати да, если через pjax, то так и сделай - форму в отдельный файл и рендерь его
при этом в файле в начале проверь, есть ли модель, и если нету, создавай пустую

Admin
ERROR: S client not available

Konstantin
24.08.2017
09:29:16
так ты из вьюх его вызываешь без модели, и форма рендерится пустая

Yury
24.08.2017
09:29:47
я пытался вынести в отдельное вью и рендерить в других, но как обозвать экшн в контроллере в таком случае не пойму
тоесть до этого я имел actionIndex
с обработкой

Konstantin
24.08.2017
09:29:57
а в контроллере рендеришь с моделью, и форма будет заполненная (на случай, если валидация не прошла)

Yury
24.08.2017
09:30:03
теперь она допустим _callback.php
вызываю путем <?= $this->render('_callback')?>

Konstantin
24.08.2017
09:30:35
запили actionContact() в 'siteController`
сейчас пример найду

Yury
24.08.2017
09:32:30
обработчик вот так выглядит
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('success', 'Спасибо! Наш агент скоро с вами свяжется!');
} else {
Yii::$app->session->setFlash('error', 'Упс! Произошла ошибка. Попробуйте еще раз');
}
return $this->refresh();
} else {
return $this->render('index', [
'model' => $model, 'dataProvider'=>$dataProvider,
]);
}

Konstantin
24.08.2017
09:33:55
public function actionContact()
{
if (!Yii::$app->request->isPjax) {
throw new BadRequestHttpException("PJAX only");
}
$model = new ContactForm();
//form submitted inside window
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->render('_contact-success', [
'model' => $model,
]);
}
return $this->render('_contact-form', [
'model' => $model,
]);
}

Google

Konstantin
24.08.2017
09:34:04
сделай вот так
а теперь вьюха
Pjax::begin([
'id' => 'contact-pjax',
'linkSelector' => false,
'enablePushState' => false,
'enableReplaceState' => false
]);
$form = ActiveForm::begin([
'id'=>'contact-form',
'action' => Url::to(['/site/contact']),
'options' => [
'data-pjax' => 1,
]
]);
echo $form->field($model, 'name')->textInput();
echo $form->field($model, 'email')->textInput();
echo $form->field($model, 'question')->textarea(['rows' => 4]);
echo Html::submitButton('Submit', ['class' => 'btn btn-green']);
ActiveForm::end();
Pjax::end();
ну и вот тот success
Pjax::begin([
'id' => 'contact-pjax',
'linkSelector' => false,
'enablePushState' => false,
'enableReplaceState' => false
]);
echo 'Thank you';
Pjax::end();
все понятно?

Yury
24.08.2017
09:39:07
вроде как, а в чем преимущество пджакс?

Vladislav
24.08.2017
09:40:17
удобство
можно перемещаться к предыдущему состоянию страницы через кнопку назад без перезагрузки

Yury
24.08.2017
09:40:54
тоесть у меня должно быть 3 вьюхи грубо говоря, контакнт, контакт_саксес,и контакт эррор?

Konstantin
24.08.2017
09:49:37
или так, или еще один параметр передавать в эту одну вьюху и по нему решать, что показывать: форму, или сообщение
философски pjax похож на activeform

Yury
24.08.2017
09:50:03
ну я вообще флеши использовал

Konstantin
24.08.2017
09:50:24
простое дефолтное поведение, которое решает 90% задач
не используй флеши, потому что их будет некому рендерить
в пиджаксе
идея ж в том, что пиджакс заменяет блок целиком
в моем примере $("#contact-pjax") в текущем окне браузера заменится на $("#contact-pjax") из ответа сервера

Yury
24.08.2017
09:52:14
понял, спасибо, тоесть, мне по этому примеру нужно 2 вью _contant-form и _contact-success, верно?

Konstantin
24.08.2017
09:52:54
да, можно так