Как показать предупреждение JavaScript без обновления страницы в Yii? - PullRequest
0 голосов
/ 13 мая 2018

У меня есть следующий код, чтобы избежать дублирования названий продуктов в моей таблице.Но когда я принимаю диалоговое окно с предупреждением, оно отправляет меня на пустую страницу.

/**
 * Creates a new Producto model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 * @return mixed
 */
public function actionCreate()
{
    $model = new Producto();

    if ($model->load(Yii::$app->request->post())){
        if(($productos = ['nombre_producto' => Yii::$app->request->get('nombre_producto')])!=null){
            echo '<script language="javascript">alert("Produdcto already exists");</script>';
        }else {
            if($model->save()){
                return $this->redirect(['index']);
            }
        }
    } else {
        return $this->renderAjax('create', [
            'model' => $model,
        ]);
    }
}

1 Ответ

0 голосов
/ 13 мая 2018

это потому что вы добавили

return $this->renderAjax('create', [
        'model' => $model,
]);

В части else и сценарий в первой if.

Также используйте только type="text/javascript" вместо javascript, хотя браузер имеет этот тип по умолчанию, теперь вы также можете пропустить эту часть и использовать

$script=<<<JS
alert("Produdcto already exists");
JS;
$this->getView()->registerJs($js,\yii\web\View::POS_READY)

Вы должны изменить свою функцию на

/**
 * Creates a new Producto model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 * @return mixed
 */
public function actionCreate()
{
    $model = new Producto();

    if ($model->load(Yii::$app->request->post())){
        if(($productos = ['nombre_producto' => Yii::$app->request->get('nombre_producto')])!=null){
                  $script=<<<JS
                  alert("Produdcto already exists");
                  JS;
                  $this->getView()->registerJs($js,\yii\web\View::POS_READY)
        }else {
            if($model->save()){
                return $this->redirect(['index']);
            }
        }
    } 

    return $this->renderAjax('create', [
        'model' => $model,
    ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...