>  기사  >  백엔드 개발  >  Yii 프레임워크 공식 가이드 시리즈 20 - 양식 사용: 양식 입력 일괄 수집

Yii 프레임워크 공식 가이드 시리즈 20 - 양식 사용: 양식 입력 일괄 수집

黄舟
黄舟원래의
2017-02-13 09:17:481105검색



때때로 배치 모드를 통해 사용자 입력을 수집하고 싶을 때가 있습니다. 즉, 사용자는 여러 모델 인스턴스에 대한 정보를 입력하고 동시에 제출할 수 있습니다. 이러한 입력은 일반적으로 HTML 테이블로 표시되기 때문에 이를 테이블 형식 입력이라고 부릅니다.

테이블 입력을 사용하려면 먼저 데이터를 삽입할지 업데이트할지에 따라 모델 인스턴스 배열을 생성하거나 채워야 합니다. 그런 다음 $_POST 변수에서 사용자가 입력한 데이터를 추출하여 각 모델에 할당합니다. 단일 모델 입력과 약간 다른 점은 $_POST['ModelClass'][$i]을 사용하는 대신 $_POST['ModelClass']을 사용하여 입력 데이터를 추출해야 한다는 것입니다.


public function actionBatchUpdate()
{
    // 假设每一项(item)是一个 'Item' 类的实例,
    // 提取要通过批量模式更新的项
    $items=$this->getItemsToUpdate();
    if(isset($_POST['Item']))
    {
        $valid=true;
        foreach($items as $i=>$item)
        {
            if(isset($_POST['Item'][$i]))
                $item->attributes=$_POST['Item'][$i];
            $valid=$valid && $item->validate();
        }
        if($valid)  // 如果所有项目有效
            // ...则在此处做一些操作
    }
    // 显示视图收集表格输入
    $this->render('batchUpdate',array('items'=>$items));
}

이 작업이 준비되었으므로 HTML에 표시하려면 batchUpdate 보기에서 계속 작업해야 합니다. 테이블 입력 항목.


<p class="form">
<?php echo CHtml::beginForm(); ?>
<table>
<tr><th>Name</th><th>Price</th><th>Count</th><th>Description</th></tr>
<?php foreach($items as $i=>$item): ?>
<tr>
<td><?php echo CHtml::activeTextField($item,"[$i]name"); ?></td>
<td><?php echo CHtml::activeTextField($item,"[$i]price"); ?></td>
<td><?php echo CHtml::activeTextField($item,"[$i]count"); ?></td>
<td><?php echo CHtml::activeTextArea($item,"[$i]description"); ?></td>
</tr>
<?php endforeach; ?>
</table>

<?php echo CHtml::submitButton(&#39;Save&#39;); ?>
<?php echo CHtml::endForm(); ?>
</p><!-- form -->

위 코드에서는 CHtml 호출로 "[$i]name" 대신 "name"을 사용했습니다. :activeTextField 두 번째 매개변수입니다.

검증 오류가 있는 경우 앞서 설명한 단일 모델 입력과 마찬가지로 해당 입력이 자동으로 강조 표시됩니다.

위는 Yii Framework 공식 가이드 시리즈 20 - Forms 사용: 폼에 입력된 내용을 일괄 수집하는 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.