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

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

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

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

CakePHP

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

Q&A

解決済

1回答

1008閲覧

cakephpでブロックごとリンクにしてxxx.ctpに飛ばしたい

Sonono

総合スコア85

PHP

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

CakePHP

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

0グッド

0クリップ

投稿2020/04/14 05:19

cakePHPでサイトを作ろうとしています。
下のindex.ctpというファイルの中で、クラス名grassのブロックを丸ごとリンクとして、クリックするとgrass.ctpのページに飛ぶようにしたいです。
しかし、ブラウザでクリックしてみるとコントローラーのファイルとその中にクラスを作れというエラーが出てしまいます。(grassでなくgrass.ctpと書いても同じです)
ブロックごとではなくてボタンを作ってそれをリンクにするときは、下のように直接ctpファイルにとべる?のでできれば今回もそうしたいと思い、質問させていただきました。
php, cakePHP, html, css全て今チュートリアルを見ながら書いているレベルなので変な質問かもしれませんが、よろしくお願いします。

<?= $this->Html->link('レビューの追加', ['action' => 'add']) ?>

index.ctp↓

<div class=allgrasses> <?php foreach ($reviews as $review): ?> <div class=grass> <p ><?= $this->Number->format($review->id) ?></p> <p><?= h($review->image) ?></p> <p><?= h($review->name) ?></p> <p><?= h($review->name_kana) ?></p> <p><?= $this->Number->format($review->star) ?></p> <p><?= $this->Number->format($review->category_id) ?></p> <a class ="Link" href="grass"></a> </div> <?php endforeach; ?> </div>

error

1Error: Create the class GrassController below in file: src/Controller/GrassController.php

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

クリップした質問は、後からいつでもMYページで確認できます。

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

MVC モデルを理解してください。
公式 Cookbook にあるように、CakePHP は

  • リクエストを Controller が受け
  • Controller が Model に従ってデータを操作し
  • Controller が View にデータを渡し
  • View が画面を構築する

のです。
*.ctp は最後の View になるのですから、その前の Controller がなくては呼び出すことができません。
※Pages/ 配下に置かれた ctp に関しては、PagesController の働きにより手軽に呼び出すことができます

投稿2020/04/14 07:56

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sonono

2020/04/14 08:17

ありがとうございます。既存のコントローラーに書き足してできないかやってみます。 よろしければもう一つお伺いしたいのですが、ブラウザで開くとき「http://localhost:8080/reviews/add」という風にするとadd.ctpによる内容が表示されますが、URLの最後のaddはctpのファイル名という認識でよろしいでしょうか。 それとも、コントローラーファイルの中で設定するアクションのaddのことだったりするのでしょうか。
tacsheaven

2020/04/14 08:20

MVC 的には revies コントローラーの add アクションが呼び出され、その結果の何かが表示されていると言うことになります。 通常、コントローラーのアクションは、対応するテンプレートの内容を出力する(ように規約で決めている)ので、Template/Reviews/add.ctp の内容が表示されます。 ※CakePHP 4.x では Template の配置場所が変わったり、.ctp から .php になったりしています
Sonono

2020/04/14 08:22

そういうことなのですね...! すっきりしました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問