zf2でバリデータを行うには?

zf2で入力チェックを行う場合、

Formで入力条件を設定し、入力チェックを行う方法があります。

 

書き方はこんな感じ。

 

class BrandFieldset extends Fieldset implements InputFilterProviderInterface
 {
     public function __construct()
     {
         parent::__construct('brand');

         $this
             ->setHydrator(new ClassMethodsHydrator(false))
             ->setObject(new Brand())
         ;

         $this->add(array(
             'name' => 'name',
             'options' => array(
                 'label' => 'Name of the brand',
             ),
             'attributes' => array(
                 'required' => 'required',
             ),
         ));

         $this->add(array(
             'name' => 'url',
             'type' => 'Zend\Form\Element\Url',
             'options' => array(
                 'label' => 'Website of the brand',
             ),
             'attributes' => array(
                 'required' => 'required',
             ),
         ));
     }

     /**
      * @return array
      */
     public function getInputFilterSpecification()
     {
         return array(
             'name' => array(
                 'required' => true,
             ),
         );
     }
 }

ここで定義しています。

$this->add(array(
             'name' => 'hoge',
             'options' => array(
                 'label' => 'Name of the brand',
             ),
             'attributes' => array(
                 'required' => 'required',
             ),
         ));

inputのname要素hogeの入力チェックを行っています。
attributesのなかに、requiredと書いてあるので、ここで空チェックを行います。
空チェック以外にも他にも入力チェックが用意されているので、
後日、紹介します。

Zend modelの登録

ZendでDBのデータを扱うには、

Modelを用います。

 

まず、Modelを用いるためには、

module.phpに登録する必要があります。

 

今回はその部分を紹介いたします。

 

module.php

public function getServiceConfig()のメソッドでmodelの登録を行います。

public function getServiceConfig()
{
return array(
      'factories' => array(
      'Application\Model\UserTable'=> function($sm) {
      $tableGateway = $sm->get('UserTableGateWay');
      $table = new UserTable($tableGateway);
      return $table;
    }
     ,'UserTableGateway' => function($sm) {
     $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
     $resultSetPrototype = new ResultSet();
     $resultSetPrototype->setArrayObjectPrototype(new User());
     return new TableGateway(
    'user',$dbAdapter,null,$resultSetPrototype
      );
    },
   )
  );
}

 

これで、UserTableを使うことができるようになりました。

 

mysqlの外部接続

サクラVPSmysqlをPCのsqlクライアントで接続したかったので、

外部接続をすることに。


1,現在の権限を確認する。

 

mysql>select user,host from mysql.user;

 

で権限を確認する。

user とhostが出てくる。

 

初期状態では、

user   host

root   127.0.0.0

 

という風に、ローカルホストのみになっている。

 

2、databaseを確認する。

 

mysql>show databases

でdatabaseを 確認する。

 

 

3、2にあるデータベース(スキーマ)に権限を与える。

grant all privileges on mysql.* to root@"%" identified by 'パスワード' with grant option;

ここでは、すべてのhostに権限を持たせています。

root@"%"

という風にワイルドカードで指定。


データベース名はmysql.*のmysqlとなる。


これで、外部接続が可能になった!!

Zend コントローラーの登録方法

 

Zendにはコントローラというものが存在しています。

そして、これが非常に重要になります。

 

 

なぜか??

 

 

それは、このコントローラーが全てのアクションを牛耳っているからです。

 

 

で、今回はこのコントローラーをどうやって使うのか??っということについて

メモをしていきます。

 

 

 

 

このコントローラーはmodule.config.phpに記述します。

 

 

こんな感じです。

 

 

 

'controllers' => array( 'invokables' => array( 'Application\Controller\Index' => 'Application\Controller\IndexController' ), ),

 

 

 

これで、IndexControllerが登録できました。

 

またハッシュのキーとなっている、'Application\Controller\Index' は

コントローラー名のようです。この名前を使ってコントローラーを呼び出すこともあるようです。

 

 

では失礼します。

初めましてkokiBitです!!

初めまして、kokiBitです!!

 

目指すは、ZM(略してZend Master)

 

ん??ZMって??

 

そう、僕はZend framework2を使って、世界の平和のために

システムを作るのです。

 

というのは冗談で、

実際は社会にでたばかりの新社会人です。

 

これから、自分が学んだ知識を

このブログでどんどんアウトプットしていきます。

 

まずは、Zend frameworkを中心にアウトプットしていく予定です。

 

では、宜しくお願いします!!

Zend freamworkを使ってDBを登録するには??

 

今回は、基本となる

ZendからDBにつなぐために必要なDBへの登録についてです。

 

ZendSkeltonをダウンロードすると、

configというフォルダがあります。

 

さらに、configの下にautoloadというフォルダがあります。

その中に、global.php local.phpがるので開いて見ましょう。

 

中身は何も書かれていません。

 

 

f:id:kokiBit:20140821212509p:plain 

 

まずは、global.phpを書き換えて行きましょう。

何もないreturnの中に以下を記述します。

 

>||

return array(
  'db' => array(
  'driver' => 'Pdo',
  'dsn' => 'mysql:dbname=zf2tutorial;host=localhost',
  'driver_options' => array(
  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
     ),
    ),
  'service_manager' => array(
  'factories' => array(
  'Zend\Db\Adapter\Adapter'
  => 'Zend\Db\Adapter\AdapterServiceFactory',
    ),
  ),
);

||<

 

dbとservice_managerを登録しています。

ハッシュがdnsのところに、mysqlの使いたい、dbnameを書いています。

今回の場合だと、zf2tutorialというdbを使うことになります。

 

 

次に、local.phpにも手を加えて行きましょう。

 

returnの中を次のように変更します。

>||

return array(
     'db' => array(
         'username' => 'YOUR USERNAME HERE',
         'password' => 'YOUR PASSWORD HERE',
     ),
 );

||<

 

ここに、使用するサーバーのユーザーnameとパスワードを記入します。

 

 

以上になります。

 

次回から具体的にdbとのやり取りを書いて行きます。

 

では失礼します!!