2

私はYiiFraeworkの使用にまったく慣れておらず、YiiFrameworkのブログデモ内の連絡フォームデモのskeletronを使用してカスタムフォームを実装しようとしています。それぞれのフォームとほぼ同じビュー、コントローラー、モデルを実行しましたが、次の500エラーが発生しました。

Error 500 
CForm and its behaviors do not have a method or closure named "beginWidget".

ここに:コントローラーがあります:

<?php
    class CustomController extends Controller {

        public function actionSubmit()
        {
            $model = new CustomForm;
            $form = new CForm('application.views.custom._form', $model);
            $this->pageTitle = "ffffffffffff";//['title'] = "Authentication";
            if($form->submitted('submit') && $form->validate())
                $this->redirect(array('blog/index'));
            else
                $this->render('_form', array('form'=>$form));
        }

        public function getGenders()
        {
            return array(
                0 => 'Male',
                1 => 'Female');
        }
    }
?>

モデル:

<?php

    class CustomForm extends CFormModel {
        public $firstName;
        public $LastName;
        public $phone;
        public $address;
        public $gender;
        public $email;

        public function rules()
        {
            return array(
                    array('firstName, lastName, gender', 'required'),
                    array('email', 'email')
                );
        }
    }
?>

景色:

<?php
$this->pageTitle=Yii::app()->name . ' - Custom Form';
$this->breadcrumbs=array(
    'Custom Form',
);
?>

<h1>Custom Form</h1>

<?php if(Yii::app()->user->hasFlash('custom')): ?>

<div class="flash-success">
    <?php echo Yii::app()->user->getFlash('custom'); ?>
</div>

<?php else: ?>

<p>
If you have business inquiries or other questions, please fill out the following form to contact us. Thank you.
</p>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'custom-form',
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'firstName'); ?>
        <?php echo $form->textField($model,'firstName'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'lastName'); ?>
        <?php echo $form->textField($model,'lastName'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'email'); ?>
        <?php echo $form->textField($model,'email'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'phone'); ?>
        <?php echo $form->textField($model,'phone',array('size'=>60,'maxlength'=>128)); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'gender'); ?>
        <?php echo $form->radioButton($model,'gender',array('value'=>'Male')) . 'Male'; ?>
        <?php echo $form->radioButton($model,'gender',array('value'=>'Female')) . 'Female'; ?>
        <?php echo $form->error($model,'gender'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'address'); ?>
        <?php echo $form->textArea($model,'address',array('rows'=>6, 'cols'=>50)); ?>
    </div>

    <div class="row submit">
        <?php echo CHtml::submitButton('Submit'); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

<?php endif; ?>

なぜこのエラーが発生するのですか?私は何が間違っているのですか?

ありがとう!

4

1 に答える 1

2

CFormは、フォーム入力仕様を含むフォームオブジェクトを表します。

ビューファイルをパラメータとしてCFormに渡していますが、これは機能しません。

私はこの行の必要はないと思います:

$form = new CForm('application.views.custom._form', $model);

それが機能するかどうかを確認してください:)

于 2013-02-09T14:25:44.210 に答える