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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

2回答

4690閲覧

Laravel5.4で削除ボタンを押して削除ができるようにしたい

yamaoka

総合スコア27

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/07/10 05:46

投稿したもののshow画面に削除ボタンをつくり、それを押すことでその投稿を削除できるようにしたいと思っています。ですが、削除ボタンを押すとこのようなエラーが出ます

(2/2) ErrorException Trying to get property of non-object (View: C:\xampp\htdocs\Twitter_crone\twitter_clone\twc\resources\views\tweets\show.blade.php) in bc64ace9eac34c6fdbf22ebee7493fae4af22437.php (line 3) at CompilerEngine->handleViewException(object(ErrorException), 1) in PhpEngine.php (line 44) at PhpEngine->evaluatePath('C:\\xampp\\htdocs\\Twitter_crone\\twitter_clone\\twc\\storage\\framework\\views/bc64ace9eac34c6fdbf22ebee7493fae4af22437.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'tweet' => null)) in CompilerEngine.php (line 59) at CompilerEngine->get('C:\\xampp\\htdocs\\Twitter_crone\\twitter_clone\\twc\\resources\\views/tweets/show.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'tweet' => null)) in View.php (line 137) at View->getContents() in View.php (line 120)

投稿したものをうまく参照できていないということなのでしょうか?

ちなみに関連する設定は下記のようになってます

投稿したもののコントローラー

public function destroy($id) { $tweet = tweet::findOrFail($id); $tweet->delete($id); \Session::flash('flash_message', '削除しました。'); return redirect('/'); }

削除ボタンのある詳細画面

@extends('layouts.app') @section('content') <h1>Tweet</h1> <p class="lead">{{ $tweet->created_at->toFormattedDateString() }}</p> <p class="lead">{{ $tweet->body }}</p> <form method="delete" action="/tweets/{$id}"> {{ csrf_field()}} <button type="submit" class="btn">DELETE</button> </form> @endsection('content')

ルーティング

Route::group(['middleware' => 'auth'], function (){ Route::get('/', 'TweetsController@index'); Route::get('/tweets/create', 'TweetsController@create'); Route::post('/tweets', 'TweetsController@store'); Route::get('/tweets/{tweet}', 'TweetsController@show'); Route::delete('/tweets/{$id}', 'TweetsController@destroy'); });

ここの書き方は変だ!というところなど在りましたらご指摘いただきたいです

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

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

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

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

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

guest

回答2

0

HTMLのFormはそもそもdeleteメソッドに対応していないので、

<form method="delete" action="/tweets/{$id}">

<form method="post" action="/tweets/{$id}"> <input name="_method" type="hidden" value="DELETE">

に変えてみてください。

投稿2017/07/10 13:44

fagai

総合スコア2158

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

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

0

Laravelプロジェクト下の storage/framework/viewsにbladeがコンパイルされた後のファイルである
エラー表示の対象の
bc64ace9eac34c6fdbf22ebee7493fae4af22437.php
があるかと思うので、そのエラー行をみると
Trying to get property of non-object
の箇所がわかるかと思いますので、確認してみてください

投稿2017/07/10 13:01

aro10

総合スコア4106

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問