• 締切済み

cake php データの受け渡し

cake php データの受け渡し 最近CakePHPを始めた者です。 初投稿ですがよろしくお願いします。 controllersからviewにThis->setで値を渡しているのですが、上手くいきません。 view側 <p><?php $err;?></p> controllers function edit(){ $data = $this->Rock->find('all'); $this->set('data',$data); } function delRecord(){      $err = "passの値が間違っています。";      $this->set('err',$err); $this->redirect('./edit'); }

  • PHP
  • 回答数1
  • ありがとう数3

みんなの回答

回答No.1

delRecordを表示したんでしょうか。 delRecordは内部でredirectメソッド叩いてますので、ページがLocationしてしまっていると思います。 ですので、delRecord内でsetしてもそれは破棄されます。

関連するQ&A

  • メールが送信されません。<phpを閉じて開いても

    メールが送信されません。<phpを閉じて開いても送信ボタンを押してメールが送信されません。 <?php namespace Application\Block\ExternalForm\Form\Controller; use Concrete\Core\Controller\AbstractController; use Core; use Page; class TForm2 extends AbstractController { // action を指定しなかった場合、view が実行されると思われる。初期表示。 public function view() { // 最初にフォームを開いた時の処理です。初期値を view に渡して、編集画面の表示を指定します。 $input['p_name'] = ''; $input['p_email'] = ''; $input['p_message'] = ''; $this->set('isvalid', true); $this->set('input', array()); $this->set('error', array()); $this->set('section', 'edit'); } // 入力値の検証処理 private function validate() { // バリデーション結果を成功に設定 $isvalid = true; // 入力値を取得 $input['p_name'] = trim($this->post('p_name')); $input['p_email'] = trim($this->post('p_email')); $input['p_message'] = trim($this->post('p_message')); // 検証実行 if ($input['p_name'] == '') { $isvalid = false; $error['p_name'] = 'お名前は、必ず入力してください。'; } if ($input['p_email'] == '') { $isvalid = false; $error['p_email'] = 'メールアドレスは、必ず入力してください。'; } if ($input['p_message'] == '') { $isvalid = false; $error['p_message'] = 'メッセージは、必ず入力してください。'; } // View に値を渡す $this->set('isvalid', $isvald); $this->set('input', $input); $this->set('error', $error); return $isvalid; } public function action_confirm() { // 検証結果によって、確認(confirm) を、編集(edit) セクションを出し分け。 if ($this->validate()) { $section = 'confirm'; } else { $section = 'edit'; } $this->set('section', $section); } public function action_update() { // 検証結果によって、完了(complete) を、編集(edit) セクションを出し分け。 if ($this->validate()) { //ここの部分でエラーが発生します。 ?>//一回閉じる。 //ここから追加しました。 <?php if ($_POST) { ?> <!-- 確認画面 --> <form action="./tform2.php" method="post"> 名前 <?php echo $_POST["fullname"] ?> Eメール <?php echo $_POST["email"] ?> 本文 <?php echo nl2br($_POST["message"]) ?> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> </form> <?php } else { ?> <!-- 入力画面 --> <form action="./tform2.php" method="post"> 名前 <input type="text" name="fullname" value=""> Eメール <input type="email" name="email" value=""> 本文 <textarea name="message" id="" cols="" rows=""></textarea> <input type="submit" name="confirm" value="確認" class="button"> </form> <?php } ?> //ここまで <?php //もう一回開ける $c = Page::getCurrentPage(); header('location: ' . Core::make('helper/navigation')->getLinkToCollection($c, true) . '/complete'); exit; } else { $this->set('section', 'edit'); } } public function action_complete() { $this->set('section', 'complete'); } public function action_back() { // 戻るボタンで、編集(edit)セクションを表示します。 $section = 'edit'; $this->set('section', $section); } }

    • 締切済み
    • PHP
  • cakephp2.5のフォームデータの受け渡し

    CakePHP2.5でフォームからpostでデータをコントローラで受け取って 別のページで表示するにはどうすればいいでしょうか フレームワークを使用しない普通のPHPならば以下のようになります。 $_POST('paramater'); ただ、CakePHPの場合だとどのようにしていいか不明です。 調べた結果以下のものが出てきたのですが 今回はモデルを使用しないでデータを受渡ししようと思っています。 $this->request->data['model']['field']; モデルを利用しないでデータの受け渡しをする方法をお教えください。 なかなかいい参考資料も出てきません

    • 締切済み
    • PHP
  • cake php について

    cake php フォームについて View <?php echo $this->Form->create(null,array('type'=>'post','action'=>'./serch')); echo $this->Form->text('serch'); echo $this->Form->end('検索'); ?> Controller //検索機能 public function serch(){ $this->modelClass = null; if ($this->request->is('post')) { $a = Sanitize::stripAll( $this->request->data['serch']); $conditions = array("Manga.title" =>$a); $this-> set('datas',$this->paginate($conditions)); } } で実行すると(いろいろ省いていますが) Undefined index: serch と出ます。色々試してみたのですがどうやら $a = Sanitize::stripAll( $this->request->data['serch']); ここの部分がおかしいみたいなのですが理由が分かりません。 よろしければご教授ください。よろしくお願いします。

    • 締切済み
    • PHP
  • CakePHPのsyntaxエラーについて

    お世話になります。 CakePHPでサイト構成をしています。 教本に従ってコードを書いています。 最も簡単なサイトを作るという章で、MyPagesContorllerを作り、Viewにindex.ctpとedit.ctpを作り、ModelにUser.php、 ContollerにUsersController.phpを作りました。 ユーザーの一覧表示まで出来ましたが、編集機能を作るところでつまずいてます。 UsersController.php <?php class UsersController extends AppController { //モデルの指定(users) public $uses = array('User'); //レイアウトの指定(defaultの場合はなくても動作する) public $layout = 'default'; //indexアクション public function index () { $userData = $this->User->find('all'); //Viewにデータを送る $this->set('userData', $userData); } } //editアクション public function edit($id = null) { if($this->request->isPost() || $this->request->isPut()) { if(!empty($this->data)) { if($this->User->save($this->data)) { $this->Session->setFlash('保存しました'); $this->redirect(array('action' => 'index')); return; } } 下記の様なエラーが表示されてしまいます。 Error: syntax error, unexpected 'public' (T_PUBLIC) 本にある通りに記述して、何度も確認しましたが間違いが見つけられません。 写真に添付しているline20の前後を見ても特にミスは無い様に思えます どこが間違っているのでしょうか。。。 ちなみにeditアクションのソースを消すと、エラーは表示されません。 どなたかご教授頂けないでしょうか。 宜しくお願いいたします。

  • 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でフォームから送られてきたデータは$this->dataに格納されていますが、フォームから送られてきた$this->dataを「フォームの送信先」以外で使うにはどのようにしたら良いのでしょうか? $this->set('test', $this->data); $this->redirect(array( 'action' => 'confirm' )); などとして、confirmで$testをprしてみたのですが、この方法では送られないようです。 よくある、申込フォーム→確認画面、のようなものを作りたいのですが、バリデーションを行う都合もあり申込フォーム自身をフォーム送信先に指定しており、完全に内容が入力された状態になったら確認画面に移行する、というイメージなのですが、この「確認画面」にフォーム送信値の$this->dataを引き継ぐ方法がわかりません。 解決法をご存知の方、よろしくお願い致します。

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

    viewにデータを送るときに、1の $this->set() と2の $this->request->dataは、 どう違うのでしょうか? ご教授ください。 public function view($id = null) { // レコードを選択 $this->Post->id = $id; // レコードデータを取得しビューへ送る $this->set('post', $this->Post->read());---------1 } public function edit($id = null){ $this->Post->id = $id; if($this->request->is('get')) { $this->request->data = $this->Post->read();-------2 }

    • ベストアンサー
    • PHP
  • cakephpのビューの使い方

    cakephpのビューの使い方 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 書籍を読みながらcakephpを始めました。 フォームを利用するサンプルを試しています。 コントローラーで変数に値をセットし ビューでの変数の表示方法の記述がよくわかりません。 コントローラで $this->set("result",$result); とし ビューctpで <html> <body> <h1>送信結果</h1> <p><?=$result ?></p> </body> </html> と記述されているのですが、ブラウザには変数が表示されません。 <?php echo $result ?>と書けば表示されるのですが <?=$result ?>という書き方ですとなにも表示されません。 どなたかアドバイスをいただけると助かります。 作成日: 2010年4月2日(金) 21時05分

    • ベストアンサー
    • PHP
  • concrete5の外部フォームの埋め込みについて

    前提 phpでお問い合わせフォームをpostするときにエラーになります。 実現したいこと メール送信 concrete5の外部フォームの埋め込みについてエラーが発生します。 参考にしたサイトです。 https://qiita.com/s79ns/items/62ce69fef20258f35534 https://ginneko-atelier.com/blogs/entry236/ よろしくお願いします。 発生している問題・エラーメッセージ "syntax error, unexpected '<'" 該当のソースコード <?php namespace Application\Block\ExternalForm\Form\Controller; use Concrete\Core\Controller\AbstractController; use Core; use Page; class TForm1 extends AbstractController { // action を指定しなかった場合、view が実行されると思われる。初期表示。 public function view() { // 最初にフォームを開いた時の処理です。初期値を view に渡して、編集画面の表示を指定します。 $input['p_name'] = ''; $input['p_email'] = ''; $input['p_message'] = ''; $this->set('isvalid', true); $this->set('input', array()); $this->set('error', array()); $this->set('section', 'edit'); } // 入力値の検証処理 private function validate() { // バリデーション結果を成功に設定 $isvalid = true; // 入力値を取得 $input['p_name'] = trim($this->post('p_name')); $input['p_email'] = trim($this->post('p_email')); $input['p_message'] = trim($this->post('p_message')); // 検証実行 if ($input['p_name'] == '') { $isvalid = false; $error['p_name'] = 'お名前は、必ず入力してください。'; } if ($input['p_email'] == '') { $isvalid = false; $error['p_email'] = 'メールアドレスは、必ず入力してください。'; } if ($input['p_message'] == '') { $isvalid = false; $error['p_message'] = 'メッセージは、必ず入力してください。'; } // View に値を渡す $this->set('isvalid', $isvald); $this->set('input', $input); $this->set('error', $error); return $isvalid; } public function action_confirm() { // 検証結果によって、確認(confirm) を、編集(edit) セクションを出し分け。 if ($this->validate()) { $section = 'confirm'; } else { $section = 'edit'; } $this->set('section', $section); } public function action_update() { // 検証結果によって、完了(complete) を、編集(edit) セクションを出し分け。 if ($this->validate()) { //ここの部分でエラーが発生します。 //ここから追加しました。 <?php if($_POST ){ ?> <!-- 確認画面 --> <form action="./cotactform.php" method="post"> 名前 <?php echo $_POST["fullname"] ?> Eメール <?php echo $_POST["email"] ?> 本文 <?php echo nl2br($_POST["message"]) ?> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> </form> <?php } else { ?> <!-- 入力画面 --> <form action="./contactform.php" method="post"> 名前 <input type="text" name="fullname" value=""> Eメール <input type="email" name="email" value=""> 本文 <textarea name="message" id="" cols="" rows=""></textarea> <input type="submit" name="confirm" value="確認" class="button"> </form> <?php } ?> //ここまで $c = Page::getCurrentPage(); header('location: '.Core::make('helper/navigation')->getLinkToCollection($c, true).'/complete'); exit; } else { $this->set('section', 'edit'); } } public function action_complete() { $this->set('section','complete'); } public function action_back() { // 戻るボタンで、編集(edit)セクションを表示します。 $section = 'edit'; $this->set('section', $section); } }

  • cakePHP+Ajax アップロード状況の取得

    環境【cakePHP2.5, PHP5.5】 ファイルアップロードの進捗状況を取得してプログレスバーを表示したいのですが、うまくいかず困っております。 現状の方式は以下です(関連部分だけ抜粋) ●cakePHPのViewファイル(アップロードForm) <?php echo $this->Form->create('Model', array('type' => 'file')); ?> //Form作成 <?php echo $this->Form->hidden(ini_get('session.upload_progress.name'), array('value' => 'example')); ?> //PHPのアップロード状況取得設定 <?php echo $this->Form->file('upload_file'); ?> //ファイル選択 <?php echo $this->Form->submit('アップロード', array('div' => false, 'escape' => false));//submit ●Viewファイル内のjavascript(submitイベントを取得してajax通信) $(function() { $('#FormName').submit( function(event) { $.ajax({ url:'/controller/action', success:function (data, textStatus) { $('#progress').html(data); }, error:function (err) { console.log('ajax通信失敗:'+err); }, }); }); }); ●cakePHPのアクション ※アップロード処理は省略 public function action() { if ($this->request->is('ajax')) { //$_SESSIONキーから進捗状況を取得 $key = ini_get("session.upload_progress.prefix").'example'; $data = $_SESSION[$key]; //パーセンテージ計算 $progressData = round(($data["bytes_processed"]/$data["content_length"])*100); //結果表示用の変数に値を入れ、更新用のViewをrender $this->set(compact('progressData')); $this->render('/Elements/ajax/progress','ajax'); } } renderしているエレメントはアップロードViewファイルの中で指定しています。 大きく問題は2つあります。 1 ajax通信が動かない  cakePHPのアクションはキックしていますが(ログを吐かせて確認)、errorが返ってきます(errの中身は[ object Object ])。  ただし、submitイベント内ではなく、たとえば<input type=button>のonClickイベント関数の中に入れてやると正常に通信できます。  また、他にも数カ所ajax通信を行っている箇所がありますが、そちらは特に問題なく通信できています  なお、ajax通信部分をsetIntervalや関数に入れてSetTimeoutの中に含めると、アクションをキックすらできず何も動かない感じになります(なぜ…)  submitとajax通信は同時には出来ないものなのでしょうか? 2 ajax通信から$_SESSIONのupload_progress関連の値が取れない  ファイルアップロード中にcakePHPのアクションに普通にアクセス(GET)すると、アップロード状況が取得できるのですが、ajaxからこのアクションにアクセスすると値が取れない($_SESSION内にこのキーと値が存在しない)状態になります。  1の問題と絡んでいるような気もしますが、なぜajax通信のときだけ取得できないのか、原因が分からず困っております。 cakePHPでファイルアップロードの進捗を表示する機能をつくられている方など、なにかヒントを頂ければと思います。 なにとぞよろしくお願いします。

専門家に質問してみよう