Как вызвать функцию обновления контроллера - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь использовать функцию обновления контроллера на моей странице dashboard.blade.php , но когда я нажимаю "Сохранить", она переключается на страницу show.blade.php обновления.

Моя dashboard.blade.php Страница:

                    @if(count($posts) > 0 )
                            <table class="table table-striped">
                                <tr>
                                    <th>Title</th>
                                    <th>Body</th>
                                    <th>Employee Number</th>
                                    <th>Edit</th>
                                    <th>Save</th>
                                </tr>
                                @foreach($posts as $post)
                                    <tr>
                                        <td>{{$post->title}}</td>
                                        <td><input type='text' name='body'class='form-control' value='{{$post->body}}'></td>
                                        <td>{{$post->employee_no}}</td>
                                        <td><a href="{{ action("PostsController@update", $post->id) }}" >Save</a></td>
                                        <td><a href="/lsapp/public/posts/{{$post->id}}/edit" class="btn btn-default">Edit</a></td>
                                    </tr>
                                @endforeach
                            </table>
                    @else 
                        <p>You Have No Posts</p>
                    @endif

Моя функция обновления на PostsController.php страница:

public function update(Request $request, $id)
    {
        $this->validate($request,[
            //'title' => 'required',
            'body' => 'required'
            ]);
    
            //Update Post
            $post = Post::find($id);
            //$post->title = $request->input('title');
            $post->body = $request->input('body');
            $post->save();
    
           return redirect('/posts')->with('success','Post Updated');
    }

Я прочитал, что "действие" пойдет по первому маршруту, который соответствует шаблону, но я не знаю, как решить эту проблему.

Мой web.php страница:

Route::get('/', 'PagesController@index');
Route::get('/about', 'PagesController@about');
Route::get('/services', 'PagesController@services');

Route::resource('posts','PostsController');


Auth::routes();

Route::get('/dashboard', 'DashboardController@index');

Как правильно вызвать функцию обновления со страницы dashboard.blade.php ?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Вы можете решить эту проблему, используя форму отправки со скрытым методом PUT.

<form action="{{ url('customers') }}/{{$data['customer']->id}}" method="POST">
        <input type="hidden" name="_method" value="PUT">
        @csrf
</form>
0 голосов
/ 20 февраля 2019

Как насчет простой формы для каждой строки в таблице:

@if(count($posts) > 0 )
    <table class="table table-striped">
        <tr>
            <th>Title</th>
            <th>Body</th>
            <th>Employee Number</th>
            <th>Edit</th>
            <th>Save</th>
        </tr>
        @foreach($posts as $post)
            <tr>
                <td>{{$post->title}}</td>
                <td>{{$post->employee_no}}</td>
                <td>
                    <!-- Form for each row -->
                    <form action="{{ route("posts.update", [ 'post' => $post->id ]) }}" method="POST">
                        @method('PUT')
                        @csrf
                        <input type='text' name='body'class='form-control' value='{{$post->body}}'></td>
                        <button type="submit">Save</button>
                    </form>
                    <!-- Form for each row -->
                <td><a href="/lsapp/public/posts/{{$post->id}}/edit" class="btn btn-default">Edit</a></td>
            </tr>
        @endforeach
    </table>
@else 
    <p>You Have No Posts</p>
@endif
0 голосов
/ 20 февраля 2019

Для обновления данных необходимо использовать form с методом put.и маршрут будет таким,

Route::put('dashboard/update/{id}',[
            'uses' => 'DashboardController@update',
            'as' => 'dashboard.update'
        ]);

Для более Laravel Routing

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...