возник вопрос как правильно провернуть вызов функции контроллера со страницы с помощью js.
Код самой страницы:
<?php
use yii\helpers\ArrayHelper;
use yii\helpers\Url;
use yii\helpers\Html;
use yii\widgets\Pjax;
const BASE_URL = "/education/dialogs/add-result-general-test";
$form = \yii\widgets\ActiveForm::begin(
['action' => [BASE_URL . '/apply'],
'method' => 'post',
'id' => 'frm00',
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute(BASE_URL . '/validation')
]);
$checkPath = Url::toRoute(BASE_URL . '/check');
Html::beginForm([BASE_URL . '/check'], 'post',['data-pjax' => '']);
echo $form->field($test, 'test_id')->dropDownList(ArrayHelper::map(\app\modules\education\models\GeneralTest::find()->all(), 'id', 'name'),[
'prompt' => 'Выберите тест',
'class' => 'form-control',
'onchange'=> "location.href = '. $checkPath . '",
'name' => 'test_id'
]);
Html::endForm();
\yii\widgets\ActiveForm::end();
?>
<div class="alert alert-success" style="display: none"></div>
<div class="alert alert-error" style="display: none"></div>
Код контроллера:
<?php
namespace app\modules\education\controllers\dialogs;
use app\common\BaseController;
use app\modules\education\models\GeneralTestHistory;
use yii\bootstrap\ActiveForm;
use Yii;
use yii\web\Response;
class AddResultGeneralTestController extends BaseController
{
public function actionIndex()
{
$assignGeneralTest = new GeneralTestHistory();
$group = (int)Yii::$app->request->post('id');
$contactsGroup = $assignGeneralTest->searchContactGroup($group);
return $this->renderAjax('add-result-general-test', ['test' => $assignGeneralTest,'group' => $group, 'contactsGroup' => $contactsGroup]);
}
public function actionCheck(){
return 'wewe';
}
public function actionValidation()
{
$test = new GeneralTestHistory();
if (Yii::$app->request->isAjax && $test->load(Yii::$app->request->post())){
Yii::$app->response->format = 'json';
return ActiveForm::validate($test);
}
}
public function actionApply()
{
if(count($arrPost) == $resultSave){
return ['result' => 'ok', 'message' => "Тест успешно добавлен."];
} else {
return ['result' => 'error', 'message' => "Произошла ошибка добавления теста."];
}
}
}
}
Код страницы, где вызывается диалог. окно:
<?php
use yii\grid\GridView;
use app\common\widgets\Dialog;
use app\common\widgets\DialogButton;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\widgets\Pjax;
const DIALOG_ADD_RESULT_GENERAL_TEST = 'add-result-general-test';
echo DialogButton::widget(['title' => 'Добавить групповой тест', 'id' => DIALOG_ADD_RESULT_GENERAL_TEST]);
echo Dialog::widget([
'id' => 'dialog-' . DIALOG_ADD_RESULT_GENERAL_TEST,
'title' => 'Добавить групповой тест',
'subscribe' => DIALOG_ADD_RESULT_GENERAL_TEST,
'renderPath' => Url::to(['/education/dialogs/add-result-general-test']),
'renderParams' => [
'id' => $model->id
],
'buttons' => [
DialogButton::widget(['title' => 'Создать', 'id' => DIALOG_ADD_RESULT_GENERAL_TEST . '-apply',
'successFunction' => new \yii\web\JsExpression('function() { $.pjax.reload(\'#test-zone\' , {timeout : false}); }')
])
]
]);
Как правильно повесить событие на 'onchange' чтобы вызвалась функция actionCheck() из контроллера?
заранее спасибо. Убрал часть кода, чтобы было понятней.
Отправить запрос на controller/check с помощью ajax, получить данные и обработать по усмотрению.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На сайте есть сайдбар для вывода кнопки "Корзина"Я добавил в код вывод
Друзья! Я не особо опытный разработчик, в php так вообще мало что соображаю, а после нововведений VK api получить фотки с альбомов ВК для вывода...
В моем проекте есть <input type="search"> в который я ввожу информациюКогда я ввожу запрос в поле поиска появляется модальное окно с вариантами...