1

SmartyでCodeIgniterを使用しています。私が遭遇した問題は、フォームヘルパーを使用しているときです。ここにあるコードを使用しました。

form_openしたがって、実際にCIネイティブを使用してフォームタグを開いたり閉じたりしてform_closeも、フォームの送信後form_validation->run()も常にfalseです。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User extends CI_Controller {

public function index()
{
    $this->register();
}

function register()
{
    $data['title'] = 'Register';
    $this->load->library('form_validation');
    //$this->form_validation->set_rules()
    if($this->form_validation->run() == FALSE)
    {
        //the form has not been submitted or there are errors
        $this->parser->parse("register", $data); 
    }
    else
    {
        //validated and submitted
        die();
    }
}

function login()
{
    $data['title'] = 'Login';
    $this->parser->parse("login", $data);
}
}

そしてテンプレートは

Registration page
{form url='user/register'}

<table>
    <tr>
        <td>Username</td>
        <td><input type="text" name="reg_username" id="reg_username"></td>
    </tr>
    <tr>
        <td>Password</td>
        <td><input type="password" name="reg_password" id="reg_password"></td>
    </tr>
    <tr>
        <td>First Name</td>
        <td><input type="text" name="reg_firstname" id="reg_firstname"></td>
    </tr>
    <tr>
        <td>Last Name</td>
        <td><input type="text" name="reg_lastname" id="reg_lastname"></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="submitted"/></td>
    </tr>
</table>

{form}

フォームが送信されたときにコマンドが実行されることを期待die()していますが、そうではありません。何が間違っているのか教えてください。

PS SmartyをCodeIgniterに統合するために使用した方法は、https://github.com/Vheissu/Ci-Smartyです。

4

1 に答える 1

2

メソッドに少なくとも1つの検証ルールを設定する必要がありますregister()。たとえば、次のようになります。

$this->form_validation->set_rules('reg_username', 'Username', 'required');

Form_validationクラスのドキュメントから:

Form Validationクラスにまだ何も検証するように指示していないため、デフォルトではFALSE(ブール値false)が返されます。この関数は、ルールが失敗せずに正常に適用された場合にrun()のみ返されます。TRUE

于 2012-07-26T19:19:18.993 に答える