簡體   English   中英

Yii2刪除ActiveRecord錯誤消息有時是數組,有時不是嗎?

[英]Yii2 delete ActiveRecord error message sometimes array, sometimes not?

我在Controller中有這個,是用giiant生成的(我認為是正確的):

public function actionDelete($id) {
    try {
        $this->findModel($id)->delete();
    } catch (\Exception $e) {
        $msg = (isset($e->errorInfo[2])) ? $e->errorInfo[2] : $e->getMessage();
        \Yii::$app->getSession()->addFlash('deleteError', $msg);
        return $this->redirect(Url::previous());
    }

    $isPivot = strstr('$id', ',');
    if ($isPivot == true) {
        return $this->redirect(Url::previous());
    } elseif (isset(\Yii::$app->session['__crudReturnUrl']) && \Yii::$app->session['__crudReturnUrl'] != '/') {
        Url::remember(null);
        $url = \Yii::$app->session['__crudReturnUrl'];
        \Yii::$app->session['__crudReturnUrl'] = null;

        return $this->redirect($url);
    } else {
        return $this->redirect(['index']);
    }
}

現在我的問題是,它有時將$msg作為數組拋出,我不知道為什么。

查看/索引:

if (\Yii::$app->session->getFlash('deleteError') !== null) {
    echo Alert::widget([
        'options' => ['class' => 'alert-danger'],
        'body' => \Yii::$app->session->getFlash('deleteError'),
    ])
;}

錯誤信息:

PHP公告– yii \\ base \\ ErrorException

數組到字符串的轉換

我不知道為什么有時有時而不是為什么。 所有控制器都是相同的,但是對於某些模型,它起作用,而對於某些模型,它不是。 我可以實現一個解決方法, if is_array then ...[0] otherwise ... if is_array then ...[0] otherwise ...但是我覺得這不是解決問題的正確方法。 模型如何更改此錯誤消息的數據類型? 您能指出我正確的方向嗎? 非常感謝。

首先,您實際上從未在這里使用模型驗證,因此它與模型無關。 其次, $msg可能還可以,問題在於您如何使用getFlash() 此方法可能會返回數組,這是預期的並已記錄在案:

Flash消息或消息數組(如果使用addFlash)。

您應該遍歷getFlash()結果以獲取字符串形式的實際消息,或者使用將處理該問題並從getFlash()結果生成多個警報的小部件。

您也可以使用setFlash()代替addFlash() 但我不建議這樣做-很容易覆蓋以前的某些閃爍,並且您不應該盲目地假設getFlash()結果將是一個字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM