質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

92.12%

  • PHP

    10712questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    1413questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

cakephpのコメント機能について

解決済

回答 2

投稿 2016/09/06 15:29 ・編集 2016/09/07 22:02

  • 評価
  • クリップ 0
  • VIEW 597

sort_merge

score 10

cakephpwp用いたコメント機能を実装しようとしているのですがうまくいきません。

http://www.grooving-earth.com/cakephp-lesson/#19

このサイトのコメント機能実装を参考にしてやっています。

このサイトでは、
Comment.php

<?php

class Comment extends AppModel {
    public $belongsTo = 'Post'; //全てのコメントはPostに帰属している。PostIdがあれば自動で紐づく
}

Post.php

<?php

class Post extends AppModel {
    public $hasMany = "Comment"; //Commentと紐づく
    public $validate = array (
        'title' => array (
            'rule' => 'notEmpty',
            'message' => '記入してください。' // 表示するメッセージを指定
        ),
        'body' => array (
            'rule' => 'notEmpty'
        )
    );
}

この2つを用いることでブラウザに下のようにコメント欄の表示ができるとなっているのですが、自分のブラウザには表示されません。

イメージ説明

自分のブラウザはこのようになっています。

イメージ説明

テーブルも、phpMyAdminを用いて作成しました。

イメージ説明

参考にしているサイトのように表示させるにはどうしたらよいか教えていただきたいです。

どうかよろしくお願いします。

※追加
icchiさん、kunaiさんに言われた通りDBにID3、4、9のデータを追加したところ、SQLの方に変化はありましたが、表示されませんでした。

DBへの追加
イメージ説明

追加後
イメージ説明

/cake_blog/posts/view/1にアクセスした結果

イメージ説明

/cake_blog/posts/view/1を追加し、アクセスしたところ、以下のようなエラーが出ました。

イメージ説明

それで、PostController.phpに表示されたコードを追加したところ、以下のようになりました。

イメージ説明

変更したソースコード

PostsController.php

<?php
App::uses('AppController', 'Controller');
/**
 * Posts Controller
 */
class PostsController extends AppController {
/** 8~56行目追加*/
  public $scaffold;

    public $helper = array('HTML', 'Form');

    public function index() {
        $this->set('posts', $this->Post->find('all')); //$this->setでPosts変数へ代入。 $this->Post->fin('all')で記事を全て持ってくる。
    }

  public $helper = array('HTML', 'Form');

      public function index() {
          $this->set('posts', $this->Post->find('all')); //$this->setでPosts変数へ代入。 $this->Post->fin('all')で記事を全て持ってくる。
          $this->set('title_for_layout', '記事一覧'); //タイトルをセット
      }

    public $helper = array('HTML', 'Form');

        public function index() {
            $param = array (
                'order' => 'modified desc',
                'limit' => 2
            );

            $this->set('posts', $this->Post->find('all', $param)); //$this->setでPosts変数へ代入。 $this->Post->fin('all')で記事を全て持ってくる。
            $this->set('title_for_layout', '記事一覧'); //タイトルをセット
        }

      public $helper = array('HTML', 'Form');

    public function index() {
        $this->set('posts', $this->Post->find('all')); //$this->setでPosts変数へ代入。 $this->Post->fin('all')で記事を全て持ってくる。
        $this->set('title_for_layout', '記事一覧'); //タイトルをセット
    }

    public function view($id = null) {
        $this->Post->id = $id;
        $this->set('post', $this->Post->read());
    }

  public function add() {
        if ($this->request->is('post')) {
            if ($this->Post->save($this->request->data)) {
                $this->Session->setFlash('Success!');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('failed');
            }
        }
    }
/**
 * Scaffold
 *
 * @var mixed
 */
    //public $scaffold;

    public function index(){

      $posts = $this->Post->find('all');
      $this->set('posts', $posts);
}
public function view() {

    }
}
?>


add.ctp

<h2>Add post</h2>

<?php
echo $this->Form->create('Post');
echo $this->Form->input('title');
echo $this->Form->input('body', array('rows'=>3));
echo $this->Form->end('Save Post');


index.ctp

<?php

//print_r($posts);

foreach($posts as $post){
  echo $post['Post']['title']."<br>\n";
  echo $post['Post']['body']."<br>\n";
  # code...
}
?>

<ul>
<?php foreach ($posts as $post) : ?>
<li>
<?php
debug($post);
?>
</li>
<?php endforeach; ?>
</ul>

</address>
<h2>記事一覧</h2>

<ul>
<?php foreach ($posts as $post) : ?>
<li>
<?php
// debug($post);
echo h($post['Post']['title']); //hとはCakePHPが持っているHTML Special charactoresの省略形
?>
</li>
<?php endforeach; ?>
</ul>

<h2>Add Post</h2>
<?php echo $this->Html->link('Add post', array('controller' => 'posts', 'action' => 'add'));
?>


routes.php

<?php
/**
 * Routes configuration
 *
 * In this file, you set up routes to your controllers and their actions.
 * Routes are very important mechanism that allows you to freely connect
 * different urls to chosen controllers and their actions (functions).
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Config
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
/**
 * Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/View/Pages/home.ctp)...
 */
Router::connect('/', array('controller' => 'posts', 'action' => 'index'));/**追加*/

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
 * ...and connect the rest of 'Pages' controller's urls.
 */
    Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

/**
 * Load all plugin routes. See the CakePlugin documentation on
 * how to customize the loading of plugin routes.
 */
    CakePlugin::routes();

/**
 * Load the CakePHP default routes. Only remove this if you do not want to use
 * the built-in default routes.
 */
    require CAKE . 'Config' . DS . 'routes.php';


default.ctp

<?php
/**
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.View.Layouts
 * @since         CakePHP(tm) v 0.10.0.1076
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
 <title>
     <?php echo $title_for_layout; ?>
 </title>

 <div id="header">
     <h1><?php echo $this->Html->link('Home', '/'); ?></h1>
 </div>
$cakeDescription = __d('cake_dev', 'CakePHP: the rapid development php framework');
?>
<!DOCTYPE html>
<html>
<head>
    <?php echo $this->Html->charset(); ?>
    <title>
        <?php echo $cakeDescription ?>:
        <?php echo $title_for_layout; ?>
    </title>
    <?php
        echo $this->Html->meta('icon');

        echo $this->Html->css('cake.generic');

        echo $this->fetch('meta');
        echo $this->fetch('css');
        echo $this->fetch('script');
    ?>
</head>
<body>
    <div id="container">
        <div id="header">
            <h1><?php echo $this->Html->link($cakeDescription, 'http://cakephp.org'); ?></h1>
        </div>
        <div id="content">

            <?php echo $this->Session->flash(); ?>

            <?php echo $this->fetch('content'); ?>
        </div>
        <div id="footer">
            <?php echo $this->Html->link(
                    $this->Html->image('cake.power.gif', array('alt' => $cakeDescription, 'border' => '0')),
                    'http://www.cakephp.org/',
                    array('target' => '_blank', 'escape' => false)
                );
            ?>
        </div>
    </div>
    <?php echo $this->element('sql_dump'); ?>
</body>
</html>


view.ctp

<h2><?php echo h($post['Post']['title']); ?></h2>
<p><?php echo h($post['Post']['body']); ?></p>

<h2>Comments</h2>
<ul>
<?php foreach ($post['Comments'] as $comment) : ?>
<li>
<?php
echo h($comment['body']);
?>
</li>
<?php endforeach; ?>
</ul>

これを実装した際に出たエラー画像
(/cake_blog/posts/view/1を追加した際に出たエラー)
イメージ説明

(追加する前のURLに出たエラー)
イメージ説明

CakeBlogController.phpの作成を命じられたエラーの画像
イメージ説明

このエラー通りに作成したあとのエラーの画像
イメージ説明

上の2つのコードを実装してみたあとのエラーの画像(viewに関して)
イメージ説明

/posts/view/1にアクセスした際のエラー画像
イメージ説明

icchiさん修正前のview.ctpを実装した際のブラウザの画像(エラー含む)

![イメージ説明説明](a0c676fb952eb45baa39e5bec69271db.png)](7eef62bc967560326603bd36e95c7442.png)

icchiさん修正後のview.ctpを実装した際のブラウザ
の画像(エラー含む)

イメージ説明

修正前と修正後両方を足したview.ctpを実装した際のブラウザ
の画像(エラー含む)

イメージ説明

修正前の実装で出たエラーFormHelper.phpのコードを載せようとしたところ、字数オーバーになってしまったので、エラーに関する行を載せさせていただきます。
その行だけではわからないという場合は教えてください。

FormHelper.phpのエラーに関するソースコード

if (isset($options['action'])) {
            trigger_error('Using key `action` is deprecated, use `url` directly instead.', E_USER_DEPRECATED);
        }

triggerからDEPRECATED);までがエラー
対象の383行目です。

  • 気になる質問をクリップする

    クリップした質問に回答があった場合に通知・メールを受け取ることができます。

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

たぶんsort_mergeさんは、記事一覧画面を見ているけど、参考サイトは個別記事画面を表示しているのかも

アソシエーションでfindで取ってこれるのでControllerはもしかしたら変更なくても動く気がしますが
Viewの実装は書いてないですね。以下のように変更したらうまくいくかも
/View/Posts/view.ctp

<h2>Comments</h2>
<ul>
<?php foreach ($post['Comment'] as $comment) : ?>
<li>
<?php
echo h($comment['body']);
?>
</li>
<?php endforeach; ?>
</ul>

PostsController.phpの実装例

<?php
App::uses('AppController', 'Controller');
class PostsController extends AppController {
  public $scaffold;
  public $helper = array('HTML', 'Form');

  public function index() {
      $this->set('posts', $this->Post->find('all')); //$this->setでPosts変数へ代入。 $this->Post->fin('all')で記事を全て持ってくる。
      $this->set('title_for_layout', '記事一覧'); //タイトルをセット
  }

  public function view($id = null) {
      $this->Post->id = $id;
      $this->set('post', $this->Post->read());
  }

  public function add() {
    if ($this->request->is('post')) {
      if ($this->Post->save($this->request->data)) {
          $this->Session->setFlash('Success!');
          $this->redirect(array('action' => 'index'));
      } else {
          $this->Session->setFlash('failed');
      }
    }
  }
}
?>

default.ctp

<?php
/**
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.View.Layouts
 * @since         CakePHP(tm) v 0.10.0.1076
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
$cakeDescription = __d('cake_dev', 'CakePHP: the rapid development php framework');
?>
<!DOCTYPE html>
<html>
<head>
    <?php echo $this->Html->charset(); ?>
    <title>
        <?php echo $cakeDescription ?>:
        <?php echo $title_for_layout; ?>
    </title>
    <?php
        echo $this->Html->meta('icon');

        echo $this->Html->css('cake.generic');

        echo $this->fetch('meta');
        echo $this->fetch('css');
        echo $this->fetch('script');
    ?>
</head>
<body>
    <div id="container">
        <div id="header">
            <h1><?php echo $this->Html->link($cakeDescription, 'http://cakephp.org'); ?></h1>
        </div>
        <div id="content">

            <?php echo $this->Session->flash(); ?>

            <?php echo $this->fetch('content'); ?>
        </div>
        <div id="footer">
            <?php echo $this->Html->link(
                    $this->Html->image('cake.power.gif', array('alt' => $cakeDescription, 'border' => '0')),
                    'http://www.cakephp.org/',
                    array('target' => '_blank', 'escape' => false)
                );
            ?>
        </div>
    </div>
    <?php echo $this->element('sql_dump'); ?>
</body>
</html>

投稿 2016/09/06 15:59

編集 2016/09/07 22:24

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/09/06 17:09

    回答ありがとうございます。
    viewを変更したのですが変化がありませんでした。。
    Controllerは今回CommentsController.phpしか用意していないのですが、PostsController.phpも修正する必要はあるのでしょうか?

    キャンセル

  • 2016/09/06 17:32 編集

    今回はPostsControllerのviewアクションの話だと思います。
    /cake_blog/posts/view/1にアクセスしても表示されていませんか?

    postsのデータがid=1のものしかなくなっちゃったような...

    キャンセル

  • 2016/09/06 18:31

    /cake_blog/posts/view/1にアクセスしたところ、上記の画像のようなところに飛びました。

    自分がやっていること当たっていますかね?
    理解力乏しくて申し訳ありません。

    キャンセル

  • 2016/09/06 18:48 編集

    うまく伝わってないですね
    sort_mergeさんのCakeのURLに posts/view/1 を追加する感じです
    参考サイト通り作っていれば、記事一覧画面の記事がリンクになっているいるはずなのでそこを押すでもいいんですけど。

    この参考サイト、ドットインストールのメモ書きみたいだし、ところどころ抜け漏れとかありそうです。個々の実装の説明もないですし、うまくいかないようであれば、他のチュートリアルをやった方がいいかもしれませんね

    キャンセル

  • 2016/09/06 19:45

    何度も答えていただき本当にありがとうございます。

    icchiさんに教えていただいたようにアクセスしたら、ブラウザに変化がありました。

    ですが新しいエラーが出たのですが、PostController.phpをどうしたらこのエラーはなくなるのでしょうか?

    キャンセル

  • 2016/09/06 19:45

    新しく経過は記載しています。
    どうかよろしくお願い致します。

    キャンセル

  • 2016/09/06 19:49

    PostController.phpにviewというfunctionがないってエラーですね

    参考サイトの「個別記事の詳細を表示する」をやっていればあるはずなのですが
    http://www.grooving-earth.com/cakephp-lesson/#12

    手順をよく見てもう一度やってみてください。
    よくわからないようならコードも記載していただけると話が早いかもしれません。

    キャンセル

  • 2016/09/06 20:48

    詳しく教えていただき本当にありがとうございます。

    一度手順を見ながらやってみます。
    もしわからないことがあったり、エラーが出てできないことがあった時、また教えていただけないでしょうか?

    どうかよろしくお願いします。
    本当にありがとうございます。

    キャンセル

  • 2016/09/06 22:09

    はい、ゴールは近いと思うので、がんばってください。
    不明な点などあれば、気楽にどうぞ

    キャンセル

  • 2016/09/06 22:26

    参考サイトの#14まで追加していったのですが、エラーが出てきてしまい、今まで見れたページも見れなくなってしまいました。
    ソースコードを載せるので、見ていただきたいです。
    よろしくお願いします。

    キャンセル

  • 2016/09/06 22:29

    それと、ソースコードに参考サイト以外のものがある理由なのですが、大学の講義でcakephpを学習した際に用いたソースです。そのソースやサイト、データベースを用いてcakephpの機能の実装をする必要があり、今回に至ります。

    作成していたソースに加えることは問題があるのでしょうか?

    キャンセル

  • 2016/09/06 22:45 編集

    PostsController.phpに同じ関数や変数定義があるからだと思います。
    function indexとfunction viewを1個にずつにしてください。
    public $helperの定義も複数あるので1個にしてください。

    ※回答欄に自分が修正してみたコードを貼っておきますので参考にしてください。

    キャンセル

  • 2016/09/07 14:46

    コードの修正までしていただき本当にありがとうございます。

    icchiさんに修正していただいたコードをPostsController.phpに反映させても出てくるエラーが変わりませんでした。

    Parse error: syntax error, unexpected '<' in /src/cakephp/app/View/Layouts/default.ctp on line 19

    /cake_blog/posts/view/1を付け加えた後も付け加える前も同じエラーが出てしまいます。
    default.ctpの方に問題があるようなのですが、19行目を見ても<title>だけなのでどうしたらどう直したらいいのかがわかりません。

    書式的にも問題はないと思ったのですがなにが問題なのでしょうか?

    キャンセル

  • 2016/09/07 15:20

    default.ctpがPHP的におかしいのでパースエラーになってますね
    <?php ?>ブロックないにHTMLを書くとPHPの文法上おかしいのでエラーになります。

    ※回答欄に元に戻したコード貼っときました。

    キャンセル

  • 2016/09/07 17:13

    icchiさんが修正してくださったコードでdefault.phpのエラーが解決できました。
    ありがとうございます。

    default.phpを修正したあと、ブラウザを更新すると、Controllerの中にCakeBlogController.phpを作成せよ的なエラーが出たので、言われた通り作成したところ、次はCakeBlogController.phpのviewの何かを指摘されてしまいました。

    CakeBlogController.phpの作成を言われたエラーからviewに関してまでの画像を質問欄に貼るので見ていただきたいです。

    どうかよろしくお願いします。

    キャンセル

  • 2016/09/07 17:54

    URLが間違っていると思います。
    /cake_blog/posts/view/1 ではなく /posts/view/1 です。

    キャンセル

  • 2016/09/07 18:01

    ご指摘ありがとうございます。
    先ほどまでは、/cake_blog/posts/view/1で、/posts/view/1にURLが変わったのはなぜでしょうか?

    また、/posts/view/1にアクセスすると、またview.ctpに関しての指摘がありました。
    これは、indexのなにが定義されていないと言っているのでしょうか?

    キャンセル

  • 2016/09/07 18:54

    こんばんは。Cakeのuriは基本的に/インストールパス/コントローラ名/アクション名という形になっています。ここでいうインストールパスはcake_blog、コントローラはposts、アクションはviewですね。それ以降の値(1の部分)はアクションに渡されるパラメータになります。

    /cake_blog/posts/viewの処理にはPostsControllerのviewメソッドが対応することになります。またアクションに対応するビューファイルも必要です(/app/View/posts/view.ctp)

    エラーメッセージを見るとCakeBlogコントローラを作りpostsアクションを作れといわれていますが、そんな機能を作る予定はないはずです。たぶんアクセスするuriが間違っていたのだと思います。アクセスしている実際のuri、コントローラ&アクション、ビューを適切な名前で準備できているか確認してみると何か分かるかもしれません。

    キャンセル

  • 2016/09/07 20:25 編集

    nnssnさん、ありがとうございます。ちょっと時間が取れないので説明助かります。

    view.ctpのエラーですが、どうもpostsテーブルにid=1のデータがないようです。
    以前はあったんですが、insertしてください。
    なお、indexといっているのは$post配列にPostやCommentsの要素がないといういみです

    キャンセル

  • 2016/09/07 22:03

    nnssnさん回答ありがとうございます。

    アクセスするURLをPosts/view/1に変更したところ、CakeBlogControllerの作成命令は無くなりました。

    また、名前もPostsController.php、view.ctpで大丈夫だと思うのですが…。

    キャンセル

  • 2016/09/07 22:04

    icchiさん、お忙しいのに細かい回答を長い間していただき、本当に感謝しています。

    viewのエラーが出た際に、一度icchiさんが修正してくださったview.ctpの方を一度自分で参考サイトを見てやってみたview.ctpに戻したところ、CommenterやBodyの方がブラウザに表示されるようになり、また新たなエラーが出てしまいました。

    表示されたブラウザとエラーの画像を質問欄に載せています。

    次にicchiさんが修正してくださったview.ctpでブラウザを見てみると、title4とBody4が表示されるようになり、viewに関するエラーが出てきました。

    修正前と後のviewのコードを足し合わせてみたら両方表示されましたが、その分両方のエラーが出ています。

    FormHelper.phpとindexに関するエラーはどう修正したら良いのでしょうか?

    お忙しい中本当に申し訳ありませんが、どうかよろしくお願いします。

    キャンセル

  • 2016/09/07 22:04

    nnssnさんも、何かわかることがあればどうかよろしくお願いします。

    キャンセル

  • 2016/09/07 22:25

    自分のview.ctpの一部が間違えていました。すみません。
    CommentsではなくCommentでした。

    キャンセル

  • 2016/09/07 22:31

    icchiさんのご指摘のおかげでviewに関するエラーが無くなりました!
    ありがとうございます!

    残りはFormHelper.phpの383行目のエラーなのですが...。

    Deprecated (16384): Using key `action` is deprecated, use `url` directly instead.

    このエラーはどういう内容のエラーなのでしょうか?

    キャンセル

  • 2016/09/07 22:34

    icchiさん申し訳ありません。
    viewに関するエラーが消えたと思ったら自分の勘違いでした。

    キャンセル

  • 2016/09/07 22:36

    自分の勘違いでCommentsの部分の変更する箇所を間違っていました。
    viewに関するエラーは消すことができました!

    本当にありがとうございます。

    キャンセル

  • 2016/09/07 23:33 編集

    FormHelperのエラーなのでビューファイル、場合によってはアクションも確認したいのですが、該当部分のコードはここに貼られていますか?なければ追加を、ある場合はどのあたりを確認するといいか教えていただけると助かります。

    キャンセル

  • 2016/09/08 15:21

    nnssnさん、返信遅れて本当に申し訳ありません。

    FormHelper.phpのエラー行をurlに変更したところエラーが直りました!

    ブラウザ上でコメントのアクションをすることができるようになりました。

    icchiさんとnnssnさんには本当に感謝しています。
    頭もあげられません。

    本当にありがとうございました!

    キャンセル

  • 2016/09/08 15:30

    うまくいってよかったです!
    ここまでのやり取りで感じたことを率直にいうと、現時点ではCakephpのチュートリアルをやるより、もっとPHPやHTMLの基礎的な部分を学んだほうがいいと感じました。
    Cakephpはとても便利なフレームワークですが、いろんな部分を抽象化しているので、エラーがでたときに何が原因なのか特定するのがとても難しいです。

    キャンセル

0

参考サイトの画像(質問につけられた上の画像)では、ID:9の記事を探すSQLが走り、その後その「ID:9」のコメントを探すSQLが実行され、その結果3件のコメントが取得できています。

対して、質問の下の画像を見ると、IDを指定せずに全記事を取得するSQLが走り、その後「ID:3とID:4」の2つの記事のコメントを探すSQLが実行されています。

このID:3とID:4の記事にコメントはついていますか?
付いていない場合、まずID:3とID:4の記事にコメントを書き込むか、DBに直接値を入れてください。

そもそも最初に記事IDを指定していないのも参考サイトの方法と違うようですので、その場合は記事ID:9のデータを取得するようにソースコードを修正してください。
(Controller部分のソースコードがないので、何をどうすればいいかの具体的な内容はかけません(わかりません))

投稿 2016/09/06 15:40

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/09/06 17:11

    回答ありがとうございます。
    kunaiさんに指摘されたID3、4のデータを追加したのですが変化はありませんでした。
    kunaiさんがおっしゃっているControllerはどのControllerのことでしょうか?

    PostsController.phpのことですか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

92.12%

関連した質問

同じタグがついた質問を見る

  • PHP

    10712questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    1413questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

閲覧数の多いPHPの質問