4

私はYiiフレームワークが初めてです。Yii で登録フォームを実装したい。ブログ プロジェクトのデモ プロジェクトを確認しましたが、登録フォームがありません。この問題に関するチュートリアルを知っている人はいますか?

4

4 に答える 4

4

まず、Users 用のテーブルを作成します。このテーブルに基づいて、gii を使用して User モデルとコントローラーを生成し、好みに合わせてコードを調整します。ユーザー コントローラー内で、登録を処理する関数を作成します。

function actionRegister() {
    $model = new User('register');

    // collect user input data
    if(isset($_POST['User']))
    {
        $model->attributes=$_POST['User'];

        // validate user input and redirect to the previous page if valid
        $model->setAttributes(array(
            'datereg' => time(), //additional data you want to insert
            'lastlogin' => time() //additional

        ));

        if($model->save())
        {
                           //optional 
            $login=new LoginForm;
            $login->username = $_POST['User']['username'];
            $login->password = $_POST['User']['password'];
            if($login->validate() && $login->login())
                $this->redirect('/pages/welcome');
        }

    }
    else
       // display the registration form
       $this->render('register',array('model'=>$model));
    }

有効なビュー ファイル (register.php) が必要です。

$login=new LoginForm;
$login->username = $_POST['User']['username'];
$login->password = $_POST['User']['password'];
if($login->validate() && $login->login())
$this->redirect('/pages/welcome');

このコード ブロックは、ユーザーを「認証」し、登録が成功した直後にユーザーをログインさせます。CUserIdentity を使用します。$login->login() はパスワードをハッシュします。

また、テーブルに挿入する前にデータを処理するには、このようなものが必要です

    public function beforeSave() {

    if(parent::beforeSave() && $this->isNewRecord) {

        $this->password = md5($this->password);

    }

    return true;
}

コントローラー内でパスワードをハッシュすることも問題ありません。ただし、Model クラス内で DB 関連のすべてを実行したいと考えています。

ここで $model-validate() を呼び出していないことに気付くかもしれません。これは、$model->save() が検証メソッドも呼び出すためです。詳細: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#save-detail

于 2012-08-02T03:56:11.217 に答える
1

CActiveForm を使用して、yii で簡単にフォームを作成できます。

ここに yii ドキュメントのリンクがあります:: Yii CActiveForm

于 2012-08-01T05:18:17.867 に答える
0
  • CAvtiveForm を使用して、登録フォームを作成する必要があります (たとえば、LoginForm を参照してください)。
  • ユーザー モデルを作成します。
  • コントローラーを作成します。

    class UsersController extends Controller
    {
         public function actionSignup()
         {
            $model = new RegistrationForm;
    
            if (isset($_POST['RegistrationForm'])) {
                 if ($model->validate()) {
                     $user = new Users;
                     $user->populateRecord($form->attributes);
                     $user->save();
                     $this->redirect(Yii::app()->createUrl('/'));
                 }
            }
    
            $this->render('signup', array('model' => $model));
         }
     }
    
于 2012-08-01T06:47:18.903 に答える