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

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

ただいまの
回答率

89.12%

laravel5で編集ボタンを作りたい、またボタンのデザインを統一したい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,463
退会済みユーザー

退会済みユーザー

laravel5.2で、ブログサイトを作っています。
ララ帳というサイトを見たりと、真似している状態です。
2点ほど、お聞きしたく思っています。
一は、編集ボタンを作ってみたのですがエラーがでてしまうこと。
もう一つは、ボタンのデザインが統一されないことです。また、<table class="table table-striped table-hover">とかを指定しても、反映されていないようなので、その辺りも教えていただければ助かります。

私自身、理解していない部分も多いですがよろしくお願いします。

app.blade.php
<!DOCTYPE html>
  <html lang="ja">
  <head>
      <meta charset="UTF-8">
      <title>L5Blog</title>
      <link href="/css/app.css" rel="stylesheet">

  </head>
  <body>
      <div class="container">
          <div class="row">
              <div class="page-header">
              <h1>L5Blog</h1>
              <div class="col-md-12">
                  @yield('content')
              </div>
          </div>
      </div>
  </body>
  </html>
index.blade.php
@section('content')
     <div class="page-header">
     <h2>記事一覧</h2>
     </div>
     <div>
          <a href='/articles/create' class="btn btn-primary btn-lg">投稿</a>
     </div>
    <table class="table table-striped table-hover">

         <thead>
         <tr>
             <th>タイトル</th>
             <th>本文</th>
             <th>作成日時</th>
             <th>更新日時</th>
         </tr>
         </thead>
         <tbody>
         @foreach($articles as $article)
            <tr>
                <td>{{{ $article->title }}}</td>
                <td>{{{ $article->body }}}</td>
                <td>{{{ $article->created_at }}}</td>
                <td>{{{ $article->updated_at }}}</td>
                <!--詳細ページへのリンクを追加 -->
                <td>
                <a href="/articles/show/{{{ $article->id }}}" class="btn btn-primary btn-xs">詳細</a>
                <a href="/articles/edit/{{{ $article->id }}}" class="btn btn-success btn-xs">編集</a>

                {!! Form::open(['action' => ['ArticlesController@postDelete', $article->id]]) !!}
                <button type="submit" class="btn btn-danger btn-xs">削除</button>
                      {!! Form::close() !!}
                </td>
            </tr>
        @endforeach
        </tbody>
    </table>
 @endsection
edit.blade.php
@extends('app')

  @section('content')
      <h2 class="page-header">記事編集</h2>
      {!! Form::open(['action' => ['ArticlesController@postEdit', $article->id]]) !!}
          <div class="form-group">
              <label>タイトル</label>
              {!! Form::input('text', 'title', $article->title, ['required', 'class' => 'form-control']) !!}
          </div>
          <div class="form-group">
              <label>本文</label>
              {!! Form::textarea('body', $article->body, ['required', 'class' => 'form-control']) !!}
          </div>
          <button type="submit" class="btn btn-default">編集</button>
      {!! Form::close() !!}
  @endsection
show.blade.php
@extends('app')

 @section('content')
     <h2 class="page-header">記事詳細</h2>
     <table class="table table-striped">
        <li>
            <a href="/articles/edit/{{{ $article->id }}}" class="btn btn-primary pull-left">
            編集</a>
        </li>
        <li>
            {!! Form::open(['action' =>['ArticlesController@postDelete', $article->id]]) !!}
            <button type="submit" class="btn btn-danger pull-left">削除</button>
            {!! Form::close() !!}
            </li>
            </table>
         <tbody>

         <tr>
             <th>タイトル</th>
             <td>{{{ $article->title }}}</td>
         </tr>

         <tr>
             <th>本文</th>
             <td>{{{ $article->body }}}</td>
         </tr>

         <tr>
             <th>作成日時</th>
             <td>{{{ $article->created_at }}}</td>
         </tr>

         <tr>
             <th>更新日時</th>
             <td>{{{ $article->updated_at }}}</td>
        </tr>

        </tbody>
    </table>
@endsection

エラー内容についてです。
編集ボタンを押すと以下のように表示されます。
ErrorException in UrlGenerator.php line 602:
Action App\Http\Controllers\ArticlesController@postEdit not defined. (View: C:\Users\Laravel_practice\resources\views\articles\edit.blade.php)

routes.phpとArticlesController.phpを追記しました。
cssフレームワークは、laravel5.2にbootstrapが入っているので、そちらを使いたいです。
度々、すみませんがよろしくお願いします。

routes.php
?php

Route::get('/', 'ArticlesController@getIndex'); 
Route::controller('articles', 'ArticlesController');
ArticlesController.php
<?php

namespace App\Http\Controllers;

use App\Article;
use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;


class ArticlesController extends Controller
{
    /**
     * @var Article
     * 一覧、詳細、作成、編集、削除のアクションをそれぞれ定義する
     */
    protected $article;


    /**
     * @param  Article $article
     */
    public function __construct(Article $article)
    {
        $this-> article = $article;

    }
    /**
     * 記事の一覧
     *
     * @return \Illuminate\View\View
     */
    public function getIndex() 
    {
        $articles = $this->article->all();
        return view('articles.index')->with(compact('articles'));

    }

    /**
     * 記事の詳細
     *
     * @param  $id
     * @return  \Illuminate\View\View
     */
    public function getShow($id)
    {
        $article = $this->article->find($id);
        return view('articles.show',compact('article'));

    }

/**
 * 記事の投稿
 * GET/articles/createの場合はgetCreate()
 * POST/articles/createの場合はpostCreate() 
 * @return \Illuminate\View\View
 */
public function getCreate()
    {
        return view('articles.create');
    }

/**
 * 記事の投稿
 * 
 *
 * @param  Request $request 
 * @return \Illuminate\Http\RedirectResponse
 */
    public function postCreate(Request $request)
    {
        $data = $request->all();
        $this->article->fill($data);
        $this->article->save();

        return redirect()->to('articles/index');
    }


    /**
     * 記事の編集
     *
     * @param  $id 
     * @return \Illuminate\View\Viwe
     */
 public function getEdit($id)
    {
        $article = $this->article->find($id);

        return view('articles.edit')->withArticle($article);
    }


/**
 * 記事の編集
 *
 * @param  Request $request 
 * @param          $id
 * @return \Illuminate\Http\RedirectResponse
 */



/**
 * 記事の削除
 *
 * @param  $id 
 * @return \Illuminate\Http\RedirectResponse
 */
 public function postDelete($id)
    {
        $article = $this->article->find($id);
        $article->delete();

        return redirect()->to('articles/index');
    }
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • romiogaku

    2016/07/11 16:08

    エラーが出ているのならエラー内容を追記してください。
    デザインはCSSによるのでこれだけではわかりません。
    CSSフレームワークを使っているのならそれについても情報を教えて下さい。

    キャンセル

  • romiogaku

    2016/07/12 10:25

    Action App\Http\Controllers\ArticlesController@postEdit not defined
    が答えだと思いますが・・・
    routes.phpとArticleControllerについて追記してください。
    CSSフレームワークを使っているのならそれについても情報を教えて下さい。

    キャンセル

回答 2

checkベストアンサー

+2

ArticleControllerにpostEditがないことが原因ではないでしょうか?
(代わりにgetEditがあるようですが。。)

Bootstrapが反映されない件については、ブラウザ上で意図するCSSファイルが読み込まれているか確認するとよいと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/20 09:49

    しっかり、確認できていなかったみたいです。
    postEditをArticleControllerに追加したら、ちゃんと動きました。ありがとうございます。
    bootstrapの方は、まだよくわかっていないのですがCSSファイルを確認してみます。

    キャンセル

0

下記のソースをArticleControllerに追加しました。

public function postEdit(Request $request, $id)
{
    $article = $this->article->find($id);
    $data = $request->all();
    $article->fill($data);
    $article->save();

    return redirect()->to('articles/index');
}

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる