2016-05-26 7 views
0

My Registration Pageデータベースのチェックボックスから選択した趣味のIDを保存する必要があります。まず、私の趣味のテーブルで、私はすべての趣味の名前を表示し、チェックボックスに表示します。今、どの趣味が選択されても、趣味のIDを別のテーブルに格納します。選択した趣味のIDをyiiでデータベースに保存する方法1.13

これはビュー/サンプル/ register.php

<div class="row"> 
    <?php echo $form->labelEx($model,'hobby'); 
    $opts = CHtml::listData(Hobbies::model()->findAll(),'hobby_id','hobby_name'); 
    echo $form->checkBoxList($model,'hobby',$opts, array('labelOptions'=>array('style'=>'display:inline'),'separator'=>' ')); 
    echo $form->error($model,'hobby'); ?> 
</div> 

で私のコードであり、これはコントローラ/ SampleController.php

if($model->validate()) 
     { 
      $model->hobby = implode(",",$model->hobby); 
      if($model->save()) 
      { 
       $this->redirect(array('site/login')); 
      } 
      return; 
     } 

で私のコードである。しかし、それはエラーが表示されますas PHP警告mb_strlen()は、パラメータ1が文字列であると想定しています。配列はです。誰でも助けてください。

答えて

0

はレディ@srininvasaあなたのコントローラ

$postArr = $_POST[<FORM NAME>]; //Post data to an array 
$model->hobby = implode(", ", $postArr['hobby']); //Getting details from post array 
if($model->validate()) 
    { 
     if($model->save()) 
     { 
      $this->redirect(array('site/login')); 
     } 
     return; 
    } 
+0

同じエラーでこのコードを試してみてください。私のコントローラにもコードを与えていないと、同じエラーが表示されます。私は私のビューファイルに問題があったと思う。しかし、私はそれを修正する方法を知らない。 – Jebil

+0

最初のチェック$ optsは配列を返します。配列を返す場合は、このコードを次の行に入れてください。echo $ form-> checkBoxList($ model、 'hobby'、$ opts); –

+0

私はスクリーンショットを追加しました。これは私の登録ページです。そこには、データベースからの趣味の名前が表示されます。 – Jebil