2017-11-10 17 views
-1

エラーメッセージに顧客IDの代わりに顧客名を表示したい。エラーメッセージのid(customer_id)の代わりにYii2の表示名

これを行うには?

以下

、私のモデルでは関係あり

public function getCustomer() { 
    return $this->hasOne(Customer::className(), ["id" => "customer_id"]); 
} 

モデル検証ルール、ここでエラーメッセージで、私は顧客名を設定する必要があり、ため

public function rules() 
     { 
      return [   
       ['customer_id','unique','message'=>'Customer **{here i have to set customer name}** already exist in rd pool'], 

      ]; 
     } 

enter image description here

+3

を参照してください。.. – scaisEdge

+0

昇天関連するコードを示しています。あなたのリレーション名 'customer'を。顧客 '$ this-> customer-> name'がすでに使用されているか試してみてください。 –

+0

@InsaneSkullあなたは正しいです、私たちはこの方法で顧客名を得ることができますが、私はエラーメッセージでこれを試したとき、私は顧客名を得ていませんでした。確認してください、私は私の検証ルールを追加しました。 –

答えて

0

使用の衣装の検証これが提案する

最初にmのルール関数odelsクラス宣言衣装の検証機能

return [ 

     ['id', 'validateID', 'when'=> function($model){ 
       return (!empty($model->id))? true:false; 
      },], 
     ...... 
]; 

次に同じモデルでvalidateId

最後に
public function validateId($attribute, $params, $validator) 
{ 
    $id = $this->id; 

    { here you can write code to check} 
    if(condition check)){ 
     $this->addError('id', "Coustumer $userName booking start date"); 
     return false; 
    } 
} 

次に 'enableAjaxValidation' を追加=> Trueの場合、フォームで

<?php $form = ActiveForm::begin([ 
    'enableAjaxValidation' => true 
    ]); ?> 

と呼ばれるパブリック関数を作成しますコントローラでモデルのチェックを有効にする

if($request->isAjax && $model->load($request->post())){ 
     yii::$app->response->format = 'json'; 
     return ActiveForm::validate($model); 
    } 
あなたには、いくつかの混乱を持っている場合は

http://www.yiiframework.com/doc-2.0/guide-input-validation.html#creating-validators

+0

はい私はカスタムバリデータを作成できますが、私は一般的な要件だと思うので、yiiは枯渇しました。しかし、私はそれを行うことを知らない –

関連する問題