ラベル helper の投稿を表示しています。 すべての投稿を表示
ラベル helper の投稿を表示しています。 すべての投稿を表示

2009年8月28日金曜日

Railsの日付選択ヘルパー (select_date)

Rails2.3で日付選択ヘルパー(select_date)を使うためのメモ。

オプションとして指定できるものはこんな感じのようだ。

<%
options = {
 :prefix => 'payday', # field名のprefix
 :order => [:month, :year, :day], # 表示順
 :date_separator => '/', # 項目間の区切り
 :prompt => true, # 選択リストの一番上の表示について。個別の指定も可
 :include_blank => true, # 選択リストの一番上のブランクにする
 :use_month_numbers => true, # 月を数字で表す

 # 選択可能な年の範囲を指定
 :start_year => Date.today.year,
 :end_year => Date.today.year + 1,

 # 非表示にする
 :discard_year => true,
 :discard_month => true,

 :discard_day => true
}
html_options = {} # ?
%>
<%= select_date(Date.today + 2.days, options, html_options) %>


また、Rails2.2にはバグがあるらしい → エラー回避 date_select -- can't convert Symbol into String - 税理士業界でSaaS開発をしながら綴る日記


select_dateとdate_selectは似てるけど別モノらしい。
年月日を個々に作る場合、「select_year, select_month, select_day」が使えるが、「year_select, month_select, day_select」は無い。



参考:
 Module: ActionView::Helpers::DateHelper (本家リファレンス)
 変なヤバいもんログ » Railsで忘れそうなHelperメソッドメモ

 いきなりはまった。select_date - 印刷屋のdeveloper日記

2008年11月8日土曜日

CakePHP 1.2のFormHelperのradio()で余分なhiddenを出力しない方法

CakePHP1.2のFormHelperでラジオボタンを出力すると、ラジオボタンの前に隠し項目が出力されることがある。


<input type="hidden" name="data[Foo][bar]" id="FooBar_" value="" />
<input type="radio" name="data[Foo][bar]" id="FooBarBaz" value="Baz" />
<label for="FooBarBaz">Baz</label>

このhiddenを出力させたくない場合、$form->radio()の第3引数の配列で、'value'に何か値をセットして渡す。
echo $form->radio('Foo.bar', array('Baz' => 'Baz'), array('value' => 'none'));
そうすると、
<input type="radio" name="data[Foo][bar]" id="FooBarBaz" value="Baz" />
<label for="FooBarBaz">Baz</label>

ラジオボタンの値に一致するvalueを渡すとそれが初期選択状態になるので、選択状態にしたくない場合は上記の例のように一致しない適当なvalueを渡す。


参考:API for CakePHP : The PHP Rapid Development Framework :: version 1.2.x.x

CakePHPの標準機能でパンくずリスト(トピックパス)を生成する方法

CakePHPでパンくずリストを表示するサンプル YARETOKO「ヤレトコ」メインブログ


標準で使えるのが便利。
$html->addCrumb()の第2引数(URL)を省略すると、リンクでないただのテキストとして表示されるようだ。
なのでelementにするならURLを省略できるようにすると便利。

<?php
foreach ($crumbs as $crumb) {
 $crumb = am(array('url' => null, 'options' => null), $crumb);
 $html->addCrumb($crumb['title'], $crumb['url'], $crumb['options']);
}

echo '<div class="crumbs">';
echo $html->getCrumbs(' > ', 'トップ');
echo "</div>\n";


参考:API for CakePHP : The PHP Rapid Development Framework :: version 1.2.x.x

2008年9月6日土曜日

CakePHP1.2の layoutで使える Helperのまとめ

head要素内に記述する要素など、layoutに書く要素のうちHelperで作成できるもののまとめ。



  • ドキュメント宣言 (参考:HtmlHelper::docType
    //引数なしの場合はXHTML1.0 Strict
    echo $html->docType();
  • Content-Typeのmetaタグ (参考:HtmlHelper::charset)※2008/09/13 誤り修正
    //デフォルトはPHPのdefault_charset???
    echo $html->charset();
  • CSS (参考:HtmlHelper::css
    複数ある場合は配列で渡せる。
    //webroot/css/foo.cssを読み込む場合
    echo $html->css('foo');

    //webroot/css/foo.cssとwebroot/css/bar.cssの2つを読み込む場合

    echo $html->css(array('foo', 'bar'));
  • JavaScript (参考:JavascriptHelper::link
    これも配列で渡せる。
    //webroot/js/foo.jsを読み込む場合


    echo $javascript->link('foo');



    //webroot/js/foo.jsとwebroot/js/bar.jsの2つを読み込む場合


    echo $javascript->link(array('foo', 'bar'));


    JavascriptHelperを使う場合、ControllerでこのHelperを有効にしておく。(「s」が小文字なので注意!)
    var $helpers = array('Html', 'Javascript');
  • その他、$html->meta('xxx')で作成できるもの (参考:HtmlHelper::meta
    • RSS ('rss')

    • Atomフィード ('atom')
    • favicon ('icon')
      • デフォルトはwebroot/favicon.ico
    • metaタグのkeyword('keyword')
    • metaタグのdescription ('description')


YUI Girdsを使うならこんな感じになる。
<<?php ?>?xml version="1.0" encoding="<?php echo ini_get('default_charset'); ?>" ?>
<?php echo $html->docType(); ?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<?php echo $html->charset(); ?>
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title><?php echo $title_for_layout; ?></title>
<?php
echo $html->meta('icon', '/favicon.ico'); //サイト全体で共通のfaviconを使う場合
echo $html->css(array('foo', 'bar'));
echo $javascript->link(array('foo', 'bar'));
echo $scripts_for_layout;
?>
</head>

<body>
<div id="doc2" class="yui-t7">

<div id="hd">
ここにヘッダーを書く
</div><!-- #hd -->

<div id="bd"><div class="yui-g"><?php echo $content_for_layout; ?></div></div>

<div id="ft">
ここにフッターを書く
</div><!-- #ft -->

</div><!-- #doc/[2-4]?/ -->

</body>
</html>

少しくらいCSSやJavaScriptを書くだけなら、わざわざHelperを使わずに直接書いた方がいいかも。
JavaScriptは</body>の直前に書きたいが、これでは無理か...?



ブログ アーカイブ

tags