【问题标题】:Laravel Post Controller Method and PostController not WorkingLaravel Post Controller 方法和 PostController 不工作
【发布时间】:2016-11-04 07:03:24
【问题描述】:

我的 Laravel 博客项目 postcontroller 的 get 方法正在工作,但 post 方法不起作用。我重定向了 Post 方法。但根据我的代码,它应该返回到我的管理页面。我的控制器代码是

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use App\Post;
use App\Category;

class PostController extends Controller
{

    public function getBlogIndex() {
        return view('frontend.blog.index');
    }

    public function getSinglePost($post_id,$end='frontend') {
        return view($end . '.blog.single');
    }

    public function getCreatePost() {
        return view('admin.blog.create_post');
    }

    public function postCreatePost(Request $request ) {
        $this->validate($request, [
            'title' => 'required|max:120|unique:posts',
            'author' => 'required|max:80',
            'body' => 'required'
            ]);

        $post = new Post();
        $post->title = $request['title'];
        $post->author = $request['author'];
        $post->body = $request['body'];
        $post->save();

        return redirect()->route('admin.index')->with(['success' => 'Post Successfully Created']);
    }
}

我的路线文件

    <?php


Route::group(['middleware' => ['web']], function () {

    Route::group([
        'prefix' =>'/admin'
        ], function() {
            Route::get('/', [
                'uses' => 'AdminController@getIndex',
                'as' => 'admin.index'
            ]);

            Route::get('/blog/posts/create', [
                    'uses' => 'PostController@getCreatePost',
                    'as' => 'admin.blog.create_post'
            ]);

            Route::get('/blog/post/create', [
                    'uses' => 'PostController@postCreatePost',
                    'as' => 'admin.blog.post.create'
            ]);
        });
});

我的表格是

@extends('layouts.admin-master')

@section('styles')
    {!! Html::style('src/css/form.css') !!} 

@endsection

@section('content')
    <div class="container">
        @include('includes.info-box')
        <form action="{{ route('admin.blog.post.create') }}" method="post">
            <div class="input-group">
                <label for="title">Title</label>
                <input type="text" name="title" id="title" {{ $errors->has('title') ? 'class=has-error' : '' }} value="{{ Request::old('title') }}">
            </div>

            <div class="input-group">
                <label for="author">Author</label>
                <input type="text" name="author" id="author" {{ $errors->has('author') ? 'class=has-error' : '' }} value="{{ Request::old('author') }}">
            </div>

            <div class="input-group">
                <label for="category_select">Add Category</label>
                <select name="category_select" id="category_select">
                    <option value="Dummy Category ID">Dummy Category</option>
                </select>
                <button type="button" class="btn">Add Category</button>
                <div class="added-categories">
                    <ul></ul>
                </div>
                <input type="hidden" name="categories" id="categories">
            </div>

            <div class="input-group">
                <label for="body">Body</label>
                <textarea name="body" id="body" rows="12" {{ $errors->has('body') ? 'class=has-error' : '' }} >{{ Request::old('body') }}</textarea>

            </div>

            <button type="submit" class="btn">Create Post</button>
            <input type="hidden" name="_token" value="{{ csrf_token() }}">
        </form>
    </div>
@endsection

@section('scripts')
    {!! Html::script('src/js/posts.js') !!}
@endsection

当我提交我的帖子时,我会显示这个

我没有找到问题所在。请帮帮我

【问题讨论】:

    标签: php forms laravel laravel-5.2


    【解决方案1】:

    这是一个非常常见的错误,需要注意。每当你看到:

    RouteCollection.php 中的

    MethodNotAllowedHttpException

    您应该首先检查您的路线文件,以确保您拥有正确的Route::getRoute::post,这取决于您要执行的操作。

    您的问题是您的表单将数据作为 POST 发送,但您的路由是 GET。

    <form action="{{ route('admin.blog.post.create') }}" method="post">
    

    Route::get('/blog/post/create', [
       'uses' => 'PostController@postCreatePost',
       'as' => 'admin.blog.post.create'
    ]);
    

    将其更改为 Route::post 以使其正常运行。

    【讨论】:

    • @Jahid26 如果正确解决了问题,请将其标记为选定答案。
    猜你喜欢
    • 2020-08-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多