0

私は実際にチェックボックスリストをレンダリングしようとしていますが、これまで試したことがないので、問題が発生しています。作成された列または属性ごとにすべてのチェックボックスをレンダリングしようとしています。これはアクションコントローラです:

public function actionCreate()
    {
        $model=new Parametro;

        $variable = file_get_contents('protected\column.txt');
        $vars = explode(' ', $variable);

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if(isset($_POST['Parametro']))
        {
            $model->attributes=$_POST['Parametro'];
            if($model->save())
                $this->redirect(array('view','id'=>$model->id));
        }

        $this->render('create',array(
            'model'=>$model,
            'variable'=>$vars,
        ));
    }

これは別のいくつかのメソッドを持つモデルです

public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    $variable = file_get_contents('protected\column.txt');
    return array(
        array('parametro_id', 'required'),
        array('parametro_id', 'numerical', 'integerOnly'=>true),
        // The following rule is used by search().
        // @todo Please remove those attributes that should not be searched.
        array('id, parametro_id', 'safe', 'on'=>'search'),
        array($variable, 'safe', 'on'=>'search'),   
    );
}
public function generateAttributeLabel($variable = null)
{
    if($variable)
    {
        $variable = file_get_contents('protected\column.txt');
    }
    return $variable;
}   

public function attributeLabels()
{
        return array(
        'id' => 'ID',
        'parametro_id' => 'Parametro',
    );
}

チェックボックスリストを作成しようとしているフォーム

<div>
        <?php echo $form->checkboxList($model, $variable, array(0 => 1)); ?>
</div>

あなたが尋ねるなら、ファイルの内容

lololo trying

これは、自動的に生成されるいくつかの列であり、スペースで区切られたこのファイルにそれらの名前を保存しています。フォームのチェックボックスリストに到達するまではすべて問題ないようです。strpos() などのエラーが表示されます。どうすれば作成できますかこのチェックボックスをレンダリングして、特定の列でチェックされている人に 1 つのデータを保存しますか?

4

1 に答える 1

1

問題がチェックボックスを取得できないことである場合は、これを試してください

アップデート

あなたの_form.php で

 <div>
            <?php echo CHtml::checkBoxList('createCheck', array(), $variable); ?>
    </div>


そのためにコントローラーのアクション を変更する必要があります

public function actionCreate()
        {
            $model=new Parametro;

            $variable = file_get_contents('protected\column.txt');
            $vars = explode(' ', $variable);
          // make SURE that you are getting $vars as array
          if(isset($_POST['Parametro']))
            {
                $model->attributes=$_POST['Parametro'];
                if(isset($_POST['createCheck']))
            {
                 $newVar=array();
                $checkVariables=$_POST['createCheck'];
                foreach($checkVariables as $key)
                {
                    $newVar[]=$vars[$key];
                }
                if(!empty($newVar))
                {

                    foreach($newVar as $saveIt)
                    {

                        $model->$saveIt='y';
                    }
                     $model->save();
                }    

               }
               $this->redirect(array('view','id'=>$model->id));
            }

            $this->render('create',array(
                'model'=>$model,
                'variable'=>$vars,
            ));
        }

注:-テーブル構造がわからないため、エラーが発生する可能性があります。問題が発生した場合は、それを解決しようとするか、質問してください

于 2013-12-28T05:00:51.787 に答える