下記のようにすると、日付の入力は必須となる。 <?php var $validate = array( ‘hiduke’ => array( ‘datetime’ => array( ‘rule’ => array(‘date’), ‘message’ => ‘日付の形式が間違っています’, ‘allowEmpty’ => false, ), ), ); しかし下記のようにallowEmptyをtrueにすると、日付が入力されている時だけ日付チェックされる。 <?php var $validate = array( ‘hiduke’ => array( ‘datetime’ => array( ‘rule’ => array(‘date’), ‘message’ => ‘日付の形式が間違っています’, ‘allowEmpty’ => true, ), ), ); 【バリデーションのパラメータ、関数の意味】 (1)’required’ => true その連想配列データの”キー(key)”があるかチェックする。 (2)’allowEmpty’ => [...]
DBから内容を取得 > HTMLタグ無効 > 改行は有効 > URLはリンク表示 というよくあるパターンは下記のようにする。 Controllerファイル var $helpers = array( ‘Text’); Viewファイル <?php echo nl2br($text->autoLinkUrls(h($this->data[Posts']['content']))); ?>
サイトを更新した直後にNotFoundになった。 画面には「Error: The requested address ‘/’ was not found on this server.」と表示されている。 試しに下位ページのURLを直打ちすると正常に表示できた。 ググってみたら原因はmod_rewriteの設定だった」とかの場合もあったが、今回は下記サイトで解決できた。 cakephpで「404 Not Found」になってしまう件 結局、デバッグレベルが0だったので、いったん1に戻してみたら直った。
とりあえず動いたからMEMO /app/controllers/posts_controller.php //カテゴリセレクトボックス $categories = $this->Category->generatetreelist( $conditions = null, $keyPath = null, $valuePath = null, $spacer = ‘_’, $recursive = null); $this->set(‘categories’, $categories); /app/views/posts/admin_add.ctp echo $this->Form->input(‘Category.Category’, array(‘type’=>’select’)); //habtmの場合 echo $this->Form->input(‘Post.category_id’, array(‘type’=>’select’)); //belongsToの場合
動いたからとりあえずメモ。 参考サイトはこちら Think Twice・カテゴリーツリーの表示 categoriesテーブル CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL auto_increment, `parent_id` int(10) unsigned NOT NULL default ’0′, `lft` int(11) default ’0′, `rght` int(11) default ’0′, `name` varchar(32) default NULL, `title` varchar(255) default NULL, `image` varchar(255) default NULL, `meta_description` varchar(255) default NULL, `meta_keywords` varchar(255) default NULL, `description` text, [...]
新着店舗のRSS出力を作成した時のメモ。 ■Router(/app/config/routes.php) Router::parseExtensions(‘rss’); ■Shopコントローラー //RequestHandlerコンポーネントを追加指定 var $components = array(‘RequestHandler’); function index() { //Rss if ($this->RequestHandler->isRss()) { Configure::write(‘debug’, 0); $new_shops = $this->Shop->find(‘all’, array( ‘conditions’ => array(‘User.status’ => 1), ‘order’ => array(‘Shop.created desc’), ‘limit’ => 30, )); $this->set(‘new_shops’, $new_shops); } //省略・・・ } ■ビュー(/app/view/shop/rss/index.ctp) <?php $this->set(‘channel’, array ( ‘title’ => SITE_TITLE, //タイトル ‘link’ => PUBLIC_SITE_URL, //URL ‘description’ => [...]
コメント一覧を取得してページング処理した時のコードです。 $this->paginate = array( ‘Comment’ => array( ‘fields’ => array(‘id’, ‘user_id’, ‘body’, ‘status’, ‘created’), ‘conditions’ => array( ‘Model’ => ‘Event’, ‘foreign_key’ => $id, ‘User.status’ => 1, ), ‘recursive’ => 1, ‘limit’ => 10, ‘order’ => array(‘Comment.created desc’), ‘contain’ => array(‘User.id’, ‘User.nickname’, ‘User.status’), ), ); $comments = $this->paginate(‘Comment’); Commentテーブルには、複数のテーブルが結合されていたが、この場合はUserテーブルのみ必要だったので、Contaionを指定して余計なテーブルは排除した。 $this->Comment->unBindModel()で結合を解除するよりもコードの見通しが良いし、細かく指定できる。 ただ1つ惜しいのは、LeftJoinでの結合しかできないことだ。
DebugKit http://d.hatena.ne.jp/cakephper/20090604/1244112188 cakeplus http://d.hatena.ne.jp/kanonji/20100906/1283763857 Search http://cho-co.be/blog/cakephp/cakephp-search-plugin/ http://cho-co.be/blog/cakephp/cakephp-search-plugin-habtm/ Transition http://d.hatena.ne.jp/hiromi2424/20100219/1266554986 Qdmail http://hal456.net/qdmail/cakebase ※使ってみた!便利!Qdsmtpと合わせて使えばローカルでの開発環境でもメール送信が可能に! MediaPlugin http://blog.ecworks.jp/archives/748 ※使ってみた!便利!高機能らしいが資料が少ないのが残念!
