0

私は zend frame work が初めてです。zf create db-table tblename、zf create model tblname、zf create model tblnameMapperを学習しようとしています。

user.php を追加 (フォーム)

<?php

class Application_Form_Adduser extends Zend_Form
{

    public function init()
    {
                $this->setMethod('post');


        $username = $this->createElement('text','username');
        $username->setLabel('Username:')
                ->setAttrib('size',10);
        $password=$this->createElement('text','password');
        $password->setLabel('Password')
                 ->setAttrib('size',10);

        $reg=$this->createElement('submit','submit');
        $reg->setLabel('save');             

        $this->addElements(array(
        $username,
        $password,
        $reg
        ));



        return $this;
    }

ユーザー ビューを追加します。

<?php 
echo 'Add user';
echo "<br />" .$this->a;
echo $this->form;

?>

管理コントローラ:

<?php

class AdminController extends Zend_Controller_Action

{

    public function adduserAction(){
           $form = new Application_Form_Auth();
        $this->view->form = $form;
        $this->view->assign('a','Entere new user:');
        if($this->getRequest()->isPost()){

            $formData  = $this->_request->getPost();            
            $uname=$formData['username'];
            $pass=$formData['password'];
            $msg=$uname." added to database successfully";

            $this->view->assign('a',$msg);
            $db= Zend_Db_Table_Abstract::getDefaultAdapter();
            $query="INSERT INTO `user` ( `id` , `uname` , `password` )
            VALUES ('', '{$uname}', '{$pass}');";
            $db->query($query);         

        }}

上記のコードで db-table を実装したい.私は zend フレーム作業に慣れていないので、プログラマー ガイドを読むのに時間を費やしていますが、無駄です.マニュアルから物事を取得するのは非常に困難です.同じものを実装してくれてありがとう。

4

1 に答える 1

1

ここに簡単な例があります:

DbTable モデルを作成します (基本的には、データベース内の各テーブルのアダプター):

コマンドラインで:モジュールでこれが必要な場合はzf create db-table User user追加します。-m moduleNameこのコマンドは、次のようなファイル名User.phpを作成します。/application/models/DbTable

class Application_Model_DbTable_User extends Zend_Db_Table_Abstract {

    protected $_name = 'user'; //this is the database tablename (Optional, automatically created by Zend_Tool)
    protected $_primary = 'id'; //this is the primary key of the table (Optional, but a good idea)
}

コントローラーからクエリを実行するメソッドを DbTable モデルに作成するには、次のようなメソッドを追加します。

public function insertUser(array $data) {
    $Idata  = array(
        'name' => $data['name'] ,
        'password' => $data['passowrd']
    );
    $this->insert($Idata); //returns the primary key of the new row.
}

コントローラーで使用するには:

public function adduserAction(){
        $form = new Application_Form_Auth(); //prepare form          
try{
        if($this->getRequest()->isPost()){//if is post
            if ($form->isValid($this->getRequest()_>getPost()){ //if form is valid
                $data = $form->getValues(); //get filtered and validated form values
                $db= new Application_Model_DbTable_User(); //instantiate model
                $db->insertUser($data); //save data, fix the data in the model not the controller
                //do more stuff if required
     }     
   }
     $this->view->form = $form; //if not post view form
     $this->view->assign('a','Entere new user:');
  } catch(Zend_Exception $e) { //catach and handle exception
        $this->_helper->flashMessenger->addMessage($e->getMessage());//send exception to flash messenger
        $this->_redirect($this->getRequest()->getRequestUri()); //redirect to same page
  }
}

これは、それが得られるのと同じくらい簡単です。Zend_Db と DbTable モデルを使用した単純なアプリケーションで実現できることのほんの一部にすぎません。しかし、私が経験したように、ある時点でもっと必要になることがわかるでしょう。それは、ドメイン モデルとマッパーを調べるときです。

これらすべてを含む非常に優れた基本的なチュートリアルについては、Rob Allen の ZF 1.x チュートリアルをチェックしてください。

これが役立つことを願っています。

于 2012-07-18T03:42:05.670 に答える