0

我是 Laravel 的初学者。我创建了一个简单的博客。在列出管理员帖子的页面中,我放置了一个delete链接,其中包含作为参数附加的帖子 ID。

这个链接指向一个名为 的动作deletePost,只是写了它的声明而已。

每当我访问该路线public/admin/post时,我都会收到以下消息:

未知操作 [PostController@deletePost]。

这是我的控制器类:

class PostController extends BaseController {

    public function listPosts(){
        $posts = Post::all();
        return View::make('admin.post.list')->with('posts' , $posts);
    }

    public function addPost(){
        $data = Input::all();
        $rules = array(
            'title' => 'required|min:3',
            'body' => 'required|min:10',
        );
        $validator = Validator::make($data, $rules);

        if($validator->passes()){
            $post = new Post();
            $post->title = htmlentities(trim($data['title']));
            $post->body = strip_tags($data['body'], '<strong><pre>');
            $post->save();
            return View::make('admin.post.add')->with('message' , 'Post successfuly added.');
        } else {
            return Redirect::to('admin/post/add')->withErrors($validator);
        }
    }

    public function deletePost($id){
        return $id;
    }

}

我的路线:

Route::group(array('prefix' => 'admin'), function(){
    Route::get('/' , function(){
        return View::make('admin.main')->with('title', 'Main');
    });

    Route::group(array('prefix' => 'post'), function(){
        Route::get('/', "PostController@listPosts");
        Route::get('add', function(){ return View::make('admin.post.add'); });
        Route::post('add', "PostController@addPost");
    });
});

最后是产生此错误的视图:

@extends('layout.layout')

@section('header')

@stop

@section('content')
<h2>Main - Admin - Post Main menu</h2>
<ul>
    <li><a href="{{ url('admin/post/add') }}">Add</a></li>        
</ul>

@if(isset($posts))
    @foreach($posts as $post)
        <p>{{ $post->body }}</p>
        <a href="{{ action('PostController@deletePost', array('id' => $post->id)) }}">Delete</a>
    @endforeach
@endif

<a href="{{ url('admin/') }}">Back</a>
@stop
4

1 回答 1

1

看起来您需要为 deletePost 操作设置路线。假设您的 url 是admin/post/delete/$id,请尝试在 routes.php 中将其添加为您的帖子组的新行:

Route::get('delete/{any}', "PostController@deletePost");

您可以在视图中使用 helper 来构建整个锚点,包括 HTML 标签/属性/等,而不是使用{{ action('PostController@deletePost', array('id' => $post->id)) }}它来构建您的 URL :link_to_action()

{{ link_to_action('PostController@deletePost', 'Delete', $parameters = array($post->id), $attributes = array()) }}

于 2013-09-05T09:41:22.357 回答