【问题标题】:How to create a yii form with HTML tag without using CAactive and CHtml?如何在不使用 CAactive 和 CHtml 的情况下创建带有 HTML 标签的 yii 表单?
【发布时间】:2013-12-04 19:07:09
【问题描述】:

我是 Yii 新手,用纯 HTML 代码创建了一个表单

这里 TesterUserReg 是不同的控制器..

<form id="signup" action="/xyzApp/index.php?r=testerUserReg/create" method="post" accept-charser="UTF-8">
        <fieldset>
            <div id='solidLine'>

                <p>
                    <label for="name">Name</label><br>
                    <input id="name" name="username" type="text" class="validate[required,custom[onlyLetter],length[0,100]] text" value="" placeholder="your full name"/>
                </p>

                <p>
                    <label for="email">Email</label><br>
                    <input id="email" name="email" type="text" class="validate[required,custom[email]] text" value="" placeholder="hello@testunity.com"/>
                </p>

....... …………………………………………………………………………

注册

并使用 jQuery 验证引擎插件来验证表单..

我的控制器看起来像

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

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

        if(isset($_POST['TesterUserReg']))
        {
            $model->attributes=$_POST['TesterUserReg'];
                        $request = Yii::app()->getRequest();
                        //$model->ut = $request->getPost('username');
                        $model->ut_pwd = $request->getPost('password');
                        $model->ut_email_id = $request->getPost('email');
                        $model->ut_user_id = md5(uniqid(rand(), true));
                        $model->ut_reg_date = new DateTime();
                        if($model->save()){}
                //$this->redirect(array('view','id'=>$model->ut_user_id));
        }

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

当我提交表单时,它呈现到 Yii 默认登录页面。它没有调用这个控制器。 请帮我解决这个问题。

谢谢。

【问题讨论】:

  • 检查你的控制器“filters()”,因为它可能声明了“accessControl”

标签: php yii


【解决方案1】:

这与您的表单是否使用 CHtml 或 CActiveForm 无关。这是您的控制器问题,请检查您的控制器中的过滤器和访问规则。

如果你不确定它是做什么的,你可以暂时移除它,然后测试你是否仍然面临这个问题。

了解更多?查看以下链接。有些人确实建议初学者在动手之前通读指南。 Yii 团队确实维护了一个很棒的文档。一旦你在编码上有问题,你可以简单地查看指南或类参考,你会发现你需要什么。 http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#filter

快乐编码^_^

【讨论】:

    【解决方案2】:

    你的问题在于你的表单,因为你试图在你的控制器中得到

     if(isset($_POST['TesterUserReg']))
    

    这永远不会来自您的表单,那么您的表单将如何在您的控制器中被处理。

    所以你要做的就是改变所有表单输入的名称,就像我提到的那样

     <form id="signup" action="/xyzApp/index.php?r=testerUserReg/create" method="post" accept-charser="UTF-8">
        <fieldset>
            <div id='solidLine'>
    
                <p>
                    <label for="name">Name</label><br>
                    <input id="name" name="TesterUserReg[username]" type="text" class="validate[required,custom[onlyLetter],length[0,100]] text" value="" placeholder="your full name"/>
                </p>
    
                <p>
                    <label for="email">Email</label><br>
                    <input id="email" name="TesterUserReg[email]" type="text" class="validate[required,custom[email]] text" value="" placeholder="hello@testunity.com"/>
                </p>
    

    通过以这种方式更改表单输入名称,您的控制器条件

     if(isset($_POST['TesterUserReg']))
    

    会很满意,您的进一步流程将继续进行。

    快乐编码:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-07
      • 2014-12-27
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2020-01-15
      • 2014-08-17
      相关资源
      最近更新 更多