初の投稿です。
先日より、Laravelフレームワークにチャレンジしようと思い
いろいろと勉強をしておりましたが、基本のタスクリストなるものが掲載されたサイトを発見し
実践していたところ見事にハマってしまったので解決方法を覚書しようというしだいでございます。
とりあず自分のPCの環境とかをつらつらと
OS : OSX Yosemite 10.10.5
MAMP : 3.0.7.3 (3.0.7.3)
PHP : 5.6.2
Laravel : 5.2
参考サイト: Laravel 5.1 基本のタスクリスト
実際にやってみる
参考サイトを読んでみると完成版のソースが公開されている模様、、
サイトのインストール項を参照してGitリポジトリーをクローンしてきました。
※わたしはMAMPのhtdocs配下に配置してApache経由でアクセス出来るようにしました。
クローンしたら手順通り
「composer install」で足りないlaravelのモジュールをインストール
バージョン確認してみたら5.2が、、まぁ勉強になるカナとそのまま進める。。
PC:quickstart USER$ pwd
/Applications/MAMP/htdocs/quickstart
PC:quickstart USER$ composer installPC:quickstart USER$ php artisan --version
Laravel Framework version 5.2.20
下記コマンドもDBの設定だけやってペペっと
composer install
php artisan migrate
mysql使ってます。
最初は多分こんなに簡単にはいかないので調べながらやってください。
で き た !
これだけでチュートリアルできた〜!って気になれますね。
※なんとなくiPhoneのシュミレータでやってますけど特に意味は無いです。
あれ??
なぜなのか...
サーフィンして調べたけど見つけられなかった...
仕方が無いのでソースを見てみることに。
多分ルーティングとかがおかしいんじゃ無いかなぁと思ってroutes.phpとかをいじってみたけどダメ
初心者の私にはソースを読んだところで解らないということがわかった。
いやいやここで引き下がるわけにはいかない。
何かとっかかりを見つけなければ。
あれ、よく見てみるとアクセスしてるURLがおかしいような気が・・・
formタグのアクションが変のかな〜って思って出力されたHTMLソースを見に行ってみる
おお〜これだ〜!見つけました。
- デリートのフォーム
<!-- Task Delete Button -->
<td>
<form action="/task/4" method="POST">
- インサートのフォーム
<!-- New Task Form -->
<form action="http://localhost/quickstart/public/task" method="POST" class="form-horizontal">
デリートのフォーム要素にあるアクション属性がアレですね。
Apacheのドキュメントルート変えれば動くような気がしてなりませんが
面倒くさいので勉強としてtasks.blade.phpの下記部分を書き換えてみます。
<!-- Task Delete Button -->
<td>
<form action="/task/{{ $task->id }}" method="POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type="submit" class="btn btn-danger">
<i class="fa fa-btn fa-trash"></i>Delete
</button>
</form>
</td>
これ↑をこう↓
<!-- Task Delete Button -->
<td>
<form action="{{ url('task')}}/{{ $task->id }}" method="POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type="submit" class="btn btn-danger">
<i class="fa fa-btn fa-trash"></i>Delete
</button>
</form>
</td>
するとすると
デリート成功!
無事動くようになりました!!!
ホントはhttpd.confとかでエイリアスを貼ったほうが良いと思います。