При создании поста
У меня установлен виджет Select2 от Kartik demos.krajee.com/widget-details/select2
И использую его как Ajax Loading - вводишь 3 буквы и он находит нужную категорию. Надо сделать чтобы после того как категория нашлась и выбрана, вывелось дополнительное поле с радио списком названий сайтов с ссылками.
<?= $form->field($model, 'site')->radioList(ArrayHelper::map(Site::getSite($category_id), 'link', 'title'),
[
'item' => function($index, $label, $name, $checked, $value) use ($model) {
$check = $checked == 1 ? "checked='checked'" : null;
return '<label class="modal-radio" style="display:block;">
<input type="radio" name="' . $name . '" value="' . $value . '" ' . $check . ' tabindex="3">
<i></i>
<span>' . ucwords($label) . '</span>
</label>';
}
]
); ?>
Вставляю это поле в отдельный фаил post/form_specifics
Пробую делать с помощью jquery скрипта, когда в Ajax Loading поле находишь и выбираешь категорию срабатывает ajax запрос на /post/post-specifics" и передает Post запросом category_id и если все ок то в выводит дополнительный код пришедший с /post/post-specifics
jQuery(function ($) {
$(document).on("select2:select", "#post-category_id", function(e) {
if (($("#post-category_id").val() != null)) {
$.ajax({
url: "/post/post-specifics",
data: {
category_id: $("#post-category_id").val(),
},
method: "POST",
beforeSend: function(xhr) {
$(".wrapper_post_specifics").html("<h2 class=\"text-center\">Загрузка...</h2>");
}
}).done(function(data) {
$(".wrapper_post_specifics").html(data);
}).fail(function(data) {
alert("Во время загрузки Дополнительных полей потока произошла ошибка!");
});
}
})};
в _form.php ставлю в нужное место внутри <?php $form = ActiveForm::begin(); ?>
Как правильно зарендерить post/form_specifics в action ? с передачей всех данных?
я пробую так
в контролере Post делаю action
public function actionPostSpecifics(){
$model = new Post();
$model->load(Yii::$app->request->post());
$ category_id = $model-> category_id;
return $this->render('form_specifics', [
'model' => $model ,
'category_id' => $category_id,
]);
}
Но это не правильно, начинает выводить ошибки что нет переменой form, ставлю <?php $form = ActiveForm::begin(); ?> и end потом ArrayHelper и т.д когда прописываю все use то скрипт срабатывает но выводит post/form_specifics вместо одного поля всю страницу с главным layuot
как сделать actionPostSpecifics чтобы это поле заренедерилось в рамках actionCreate и его <?php $form = ActiveForm::begin(); ?> а потом все передалось в actionCreate как один пост запрос?