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の外部接続
サクラVPSのmysqlを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@"%"
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がるので開いて見ましょう。
中身は何も書かれていません。
まずは、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とのやり取りを書いて行きます。
では失礼します!!