CakePHPの数字のフォーマットでエラーになる

このQ&Aのポイント
  • CakePHPの数字のフォーマットでエラーが発生しています。データベースから取得した本の値段を金額表示にするために、$number->formatを使用していますが、エラーが出てしまいます。
  • 指定したViewに以下のコードを書いていますが、どこが間違っているのか分かりません。何か宣言が必要なのでしょうか?ご回答よろしくお願いします。
  • $number->formatを使用するとエラーが発生します。正しい使い方を教えていただけないでしょうか?
回答を見る
  • ベストアンサー

CakePHPの数字のフォーマットでエラーになる

CakePHP 1.3.14使用しています。 データベースから取得した本の値段を金額表示にしたいので、$number->formatを使用しましたが、「Fatal error: Call to a member function format()」という、エラーが出てしまい困っています。 以下の通りViewに書きましたが、どこか間違っている部分はありますか? <?php echo $number->format($data['Book']['price'],array( 'before'=>'&yen;', 'places'=>'0', 'thousands'=>',', 'escape'=>false )); ?> また、$number->formatを使用するときには、何か宣言が必要なのでしょうか? ご回答よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • warez
  • ベストアンサー率57% (29/50)
回答No.1

コントローラのプロパティに設定する必要があります。 public $helpers = array('Number'); またはアクション内で $this->helpers[] = 'Number';

husigikazetukai
質問者

お礼

ご回答ありがとうございます。 宣言が必要だったのですね。 無事解決いたしました。

その他の回答 (1)

回答No.2

試してみたところコントローラーに var $helpers = array('Number'); 宣言して動きました。

husigikazetukai
質問者

お礼

ご回答ありがとうございます。 宣言が必要だったのですね。 さっそく追加したところ、動くようになりました。 ありがとうございました。

関連するQ&A

  • CakePHPのブログチュートリアルについて

    PHPフレームワークのCakeについて、質問させてください。 初心者ならだれもが一度は試すであろうhttp://book.cakephp.org/ja/view/219/Blogに掲載されているブログチュートリアルですが、下記環境で実行すると大量のエラーが出力されます。(添付画像参照) 環境:hetemlレンタルサーバー Apache 2.0.xx ver 4.4.2 ※CakePHPのトップページが正常に表示されること、tmpフォルダのパーミッションは正常に設定されていることは確認しています。 また、Viewで正常にデータを取得できているにもかかわらずデータ表示部分でエラーが表示されるため、変数$postsをvar_dumpしたところ、 Array ( [0] => Array ( [id] => Array ( [id] => 1 ) [title] => Array ( [title] => タイトル ) [body] => Array ( [body] => これは、記事の本文です。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) [1] => Array ( [id] => Array ( [id] => 2 ) [title] => Array ( [title] => またタイトル ) [body] => Array ( [body] => そこに本文が続きます。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) [2] => Array ( [id] => Array ( [id] => 3 ) [title] => Array ( [title] => タイトルの逆襲 ) [body] => Array ( [body] => こりゃ本当に面白そう!うそ。 ) [created] => Array ( [created] => 2009-08-08 21:56:50 ) [modified] => Array ( [modified] => ) ) ) となっていました。 これでは、チュートリアルに掲載されている、 <?php echo $post['Post']['id']; ?> ではなく、 <?php echo $post['id']['id']; ?> で呼び出さなくてはならなくなります。 これはどこかがおかしいのでしょうか?教えてください。

    • 締切済み
    • PHP
  • cakePHPのサンプルブログで検証エラーが出ない

    cakePHP初心者です(まだはじめて数時間くらい) で、cookbookにそってサンプルブログを組んでいるのですが、 http://book.cakephp.org/2.0/ja/getting-started.html のとおり、 Postモデルに class Post extends AppModel {    public $validate = array(       'title' => array(          'rule' => 'notEmpty'       ),       'body' => array(          'rule' => 'notEmpty'       )    ); } (↑タブを全角空白4文字に変換してます) と入れてsaveしたものの、 title,bodyを空で投稿しても、エラー表示されず投稿できてしまいます (投稿一覧にも表示されます) FWを使わないで自力で組むなら、自分なりにエラーを見つけられるのですが、 まだcakePHPになれていないため、 このバグの原因を追求するためになにからはじめたらいいのかわかりません。 どなたかお教えいただけないでしょうか? よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • cakephpのバリデーションについて。

    cakephpのバリデーションについて。 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 mysql:5.1.41 書籍を読みながらcakephpを始めました。 現在 フォームで入力された項目に該当する データをmysqlのデータベースで検索後、 結果をビューに表示するものを作っています。 フォームヘルパーを使用し、inputされたデータを コントローラ側で受け、その値をモデルで検索後 ビューへ渡しています。 このようなデータベースに保存は行わない検索だけの場合 フォームに入力されたデータをcakePHPのバリデーション機能 を利用してチェックできるのでしょうか? ビューでは $form->input('form.text1'array('label'=>'検索対象1')); $form->input('form.text2'array('label'=>'検索対象2')); としています。 このform.text1とform.text2について未入力の場合など エラーチェックが行いたいです。 そもそもこのような場合のエラーチェックは コントローラーに処理を記述しバリデーションは利用しないのかなど、 どなたかアドバイスいただけると助かります。

    • ベストアンサー
    • PHP
  • cakephp エラーハンドリングができません

    cakephpを利用しているシステムで、2種類のエラーを作っておいてcontrollersの呼び出しで振り分けたいと思いますがうまくできません。 マニュアルページ(http://book.cakephp.org/ja/view/154/Error-Handling)を参考に、 app/app_error.phpを以下のように作成しました。 ((1)エラー:error(2)エラー:errorsta) ----------------------------------------------------------------- <?php class AppError extends ErrorHandler{ function error(){ $this->controller->viewPath = 'errors'; $this->__outputMessage('error'); } function errorsta(){ $this->controller->viewPath = 'errors'; $this->__outputMessage('errorsta'); } } ?> ----------------------------------------------------------------- 上記内容で、メソッドerrorは実行できるのですが、errorstaが一向に動いてくれず、404扱いになってしまいます。 app/app_error.php以外にも設定が必要なものがあるのでしょうか?

    • 締切済み
    • PHP
  • CakePHPでヘルパーが使えません

    CakePHPを使用して開発を行っています。 app/views/helpers/common_lib.php に、class CommonLibHelper extends AppHelper としてヘルパークラスを作り、コントローラーの$helpersにarray('CommonLib')を記述しました。 ビューファイルにて、$common_lib->function() として、ヘルパーで定義したメソッドを呼ぶと、 undefined variable: common_libと言われてしまいます。どうしてか教えていただけませんか? クラス名やファイル名は合っていると思うのですが・・・。 CakePHPのバージョンは、1.3.6です。

    • ベストアンサー
    • PHP
  • cakePHPのエラー

    Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'validateSearch' at line 1 SQL Query: validateSearch Notice: If you want to customize this error message, create app/View/Errors/pdo_error.ctp というエラーが出て困っています。 validateSearchの付近を確認してもよくわかりません。 searchpluginを使っているのですが、上手くいきません。 コントローラーは、 <?php App::uses('AppController', 'Controller'); class Mac554FoodDatasController extends AppController { public $name='Mac554FoodDatas'; public $components =array('Search.Prg'); public $presetVars=array(); public function beforeFilter() { //検索対象のフィールド設定代入 $this->presetVars = $this->Mac554FoodData->presetVars; // ページャ設定 $pager_numbers = array( 'before' => ' - ', 'after'=>' - ', 'modulus'=> 10, 'separator'=> ' ', 'class'=>'pagenumbers' ); $this->set('pager_numbers', $pager_numbers); } public function find() { $datas=$this->Mac554FoodData->find('all'); $this->set('datas',$datas); //検索条件設定 $this->Prg->commonProcess(); //検索条件取得 $tabe=$this->passedArgs; $conditions = $this->Mac554FoodData->parseCriteria['$tabe']; //ページャ関係 $this->paginate =array( 'conditions' => $conditions, 'limit' =>10 ); $this->set('Mac554FoodDatas',$this->paginate('Mac554FoodData')); // レイアウト関係 $this->layout = "plain"; $this->set("header_for_layout", "Sample Application"); $this->set("footer_for_layout", "copyright by SYODA-Tuyano. 2011."); // post時の処理 //$this->set('Mac554FoodDatas',$this->Mac554FoodData->find('all')); } public function index() { $this->layout = "plain"; $this->set("header_for_layout", "Sample Application"); $this->set("footer_for_layout", "copyright by SYODA-Tuyano. 2011."); //レイアウト } } ?> で、検索フォームはエレメントで <?php echo $this->Form->create('Mac554FoodData', array('url' => '/Mac554FoodDatas/find'))?> <fieldset> <legend>Search or Die!</legend> <dl> <dt><label>ユーザname</label></dt> <dd><?php echo $this->Form->input('name', array( 'type' => 'text', 'div' => false, 'label' => false))?></dd> <dt><label>time</label></dt> <dd><?php echo $this->Form->input('time', array( 'type' => 'text', 'div' => false, 'label' => false ))?></dd> <dt><label>naiyoudao</label></dt> <dd><?php echo $this->Form->input('naiyoudao', array( 'type' => 'text', 'div' => false, 'label' => false ))?></dd> </dl> <?php echo $this->Form->submit('検索',array('div'=>false,'escape'=>false))?> </fieldset> <?php echo $this->Form->end()?> のように作りました。 モデルは、 <?php class Mac554FoodDatas extends AppModel{ public $name=Mac554FoodData public $actsAs = array('Search.Searchable'); // 検索対象のフィルタ設定 public $filterArgs = array( array('name' => 'name', 'type' => 'value', 'field' => 'Mac554FoodData.name'), array('name' => 'time', 'type' => 'like', 'field' => 'Mac554FoodData.time'), array('name' => 'naiyoudao', 'type' => 'like', 'field' => 'Mac554FoodData.naiyoudao'), ); //検索対象のフィールド設定 public $presetVars = array( array('field' => 'name', 'type' => 'value'), array('field' => 'time', 'type' => 'value'), array('field' => 'naiyoudao', 'type' => 'value'), ); } という感じで作りました。 投げているSQL文を見ると、 SELECT `Mac554FoodData`.`id`, `Mac554FoodData`.`time`, `Mac554FoodData`.`name`, `Mac554FoodData`.`naiyoudao`, `Mac554FoodData`.`twinoid` FROM `mac554_foodlog`.`mac554_food_datas` AS `Mac554FoodData` WHERE 1 = 1 となっています。 よろしくお願い致します

    • ベストアンサー
    • PHP
  • CakePHP 1.3について

    CakePHPが初心者です。 Views-userdetail-index.ctpにて <?php echo $form->create(null,array('type'=>'get','action'=>'./updateRecord')); ?> ~ <?php echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); ?> ~ を記述し、userdetail_controllerにて function updateRecord(){ if (!empty($this->data)){ $this->User->id = 1; $this->User->saveField('remarks','exists'); } else { $this->User->id = 1; $this->User->saveField('remarks','empty'); } $this->redirect('.'); } を記述しています。 しかし、どうしても「!empty($this->data)」の判別によってemptyとなってしまいます。 User.remarksの部分をUserdetailにして色々ためしましたが、どうしても値の受け渡しがうまくいかないのです。 どなたかご教授を宜しくお願い致します。

    • ベストアンサー
    • PHP
  • cakePHPで

    cakePHPのビュー部分でHTMLヘルパーを使用し、パラメータを渡すシステムを作成しているのですが、パラメータが渡されず困っています。 ソースは下記のような感じです。 <?php echo $html->selectTag('Data/test',$data['test'],'0',null,null,null); ?> ローカル環境では何の問題も無く、また実際にサーバで動かした際にも、それ以外の箇所は正常に動きましたので原因がわかりません。

    • 締切済み
    • PHP
  • CakePHP リッチテキストエディタについて

    CakePHPのリッチテキストエディタについて質問があります。 以下のように、VIEWファイルを作成しました。 <?php echo $fck->textarea('column1',array('label'=>false,'div'=>false,'error'=>false,'class'=>'comment-email')); ?> このカラムのデータを、contollerでDBにINSERT処理を行っております。 画面から、このカラムに値を入れ、submitを行いDBの値を確認しましたが、column1の値がNULLのままでした。 どのようにしたら、リッチテキストエディタの値をDBに反映させれるかが分かりません。 お手数ですが、ご教唆頂けますでしょうか?

    • ベストアンサー
    • PHP
  • [CakePHP] Paginatorのリンクが変

    CakePHPのPaginatorを使ったページリンクが正しく出力されません。 1ページ目は正しく出力できていますが、2ページ目などに移動した際にURLがおかしくなります。 現状 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/2/page:3 理想 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/3 また、パラメータがついた場合も 1ページ目 http://www.example.com/hoge/2?hoge=hoge ↓ 2ページ目 http://www.example.com/hoge/3?hoge=hoge となるようにしたいのですが、何を間違えているのでしょうか。 ちなみにソースは以下のようになってます。 View/Hoge.php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); echo $this->Paginator->numbers(array('separator' => '')); echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); Config/routes.php Router::connect(     '/hoge/:page',     array(         'action' => 'hoge',     ),     array(         'pass' => array(             'page',         )     ) );

    • 締切済み
    • PHP

専門家に質問してみよう