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

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

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

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

CakePHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

2149閲覧

CakePHPで画像を投稿出来るようにしたい。

wanko0909

総合スコア6

PHP

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

CakePHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/05/02 06:37

###前提・実現したいこと

CakePHPのフォームヘルパーを使って、チュートリアル通りに作った
掲示板(ブログ)に画像を投稿したいのですが、
イメージ説明
投稿された画面には画像が画像として表示されず、
「hoge.jpg」のようにファイル名として表示されてしまいます。

以下、add.ctp

<!-- File: /app/View/Posts/add.ctp --> <h1>Add Post</h1> <?php

echo $this->Form->create('Post');
echo $this->Form->input('title');
echo $this->Form->input('body', array('type' => 'file',',method' => 'post','enctype' => 'multipart/form-data'));

echo $this->Form->end('Save Post');

?>

以下、view.ctp

<!-- File: /app/View/Posts/view.ctp --> <h1><?php echo h($post['Post']['title']); ?></h1> <p><small>Created: <?php echo $post['Post']['created']; ?></small></p> <p><?php echo h($post['Post']['body']); ?></p>

以下、PostsController.php

<?php class PostsController extends AppController { public function fileup(){ if ($this->request->is('post') || $this->request->is('put')) { //画像の保存 if($this->Post->save($this->request->data)){ //画像保存先のパス $path = ('img/'); $image = $this->request->data['body']['image']; $this->Session->setFlash('画像を登録しました'); move_uploaded_file($image['tmp_name'], $path . DS . $image['name']); }else{ $this->Session->setFlash('画像が登録できませんでした'); } } } public $helpers = array('Html', 'Form', 'Flash'); public $components = array('Flash'); public function index() { $this->set('posts', $this->Post->find('all')); } public function view($id) { if (!$id) { throw new NotFoundException(__('Invalid post')); } $post = $this->Post->findById($id); if (!$post) { throw new NotFoundException(__('Invalid post')); } $this->set('post', $post); } public function add() { if ($this->request->is('post')) { //Added this line $this->request->data['Post']['user_id'] = $this->Auth->user('id'); if ($this->Post->save($this->request->data)) { $this->Flash->success(__('Your post has been saved.')); return $this->redirect(array('action' => 'index')); } } } // public function isAuthorized($user) { // 登録済ユーザーは投稿できる if ($this->action === 'add') { return true; } // 投稿のオーナーは編集や削除ができる if (in_array($this->action, array('edit', 'delete'))) { $postId = (int) $this->request->params['pass'][0]; if ($this->Post->isOwnedBy($postId, $user['id'])) { return true; } } return parent::isAuthorized($user); } // public function edit($id = null) { if (!$id) { throw new NotFoundException(__('Invalid post')); } $post = $this->Post->findById($id); if (!$post) { throw new NotFoundException(__('Invalid post')); } if ($this->request->is(array('post', 'put'))) { $this->Post->id = $id; if ($this->Post->save($this->request->data)) { $this->Flash->success(__('Your post has been updated.')); return $this->redirect(array('action' => 'index')); } $this->Flash->error(__('Unable to update your post.')); } if (!$this->request->data) { $this->request->data = $post; } } // public function delete($id) { if ($this->request->is('get')) { throw new MethodNotAllowedException(); } if ($this->Post->delete($id)) { $this->Flash->success( __('The post with id: %s has been deleted.', h($id)) ); } else { $this->Flash->error( __('The post with id: %s could not be deleted.', h($id)) ); } return $this->redirect(array('action' => 'index')); } // } ?>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/05/02 07:37 編集

https://teratail.com/questions/74511 の質問文を訂正して書き直せばいいのに、なんで新たに投稿してしまうん? コードブロックの前と後の2箇所に「```」だけの行を挟んでね。コードが見やすくなりますよ。
退会済みユーザー

退会済みユーザー

2017/05/02 08:47

Form->create('Post') ってことはPostっていうモデルがあるってことですよね? それもコードを示してくれたほうが的確にアドバイスできるかと。
guest

回答2

0

php

1echo $this->Form->create('Post'); 2echo $this->Form->input('title'); 3echo $this->Form->input('body', array('type' => 'file',',method' => 'post','enctype' => 'multipart/form-data'));

ではなく、

php

1echo $this->Form->create('Post', array('type' => 'file',',method' => 'post')); 2echo $this->Form->input('title'); 3echo $this->Form->input('body');

で、
かつ、一例として

php

1<?php echo $this->Html->image($path . 'hoge.jpg'); ?>

の様に、<img>タグを出力する様にしないと画像は表示できません。

色々書き写しの間違いが有るようですので、その他も含めてチュートリアルをもう一度確認するといかがでしょうか?

投稿2017/05/06 02:32

rik

総合スコア1151

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

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

0

CakePHPユーザーじゃないけど、ここはおかしいんじゃないかと。

<!-- File: /app/View/Posts/add.ctp --> <h1>Add Post</h1> <?php echo $this->Form->create('Post', array('method' => 'post','enctype' => 'multipart/form-data')); echo $this->Form->input('title'); echo $this->Form->input('body', array('type' => 'file')); echo $this->Form->end('Save Post'); ?>

FormHelper::create() の第2引数 options や
FormHelper::input() の第2引数 options の使い方を今一度ご確認を。

投稿2017/05/02 08:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問