【问题标题】:how to create a controller in laravel如何在 laravel 中创建控制器
【发布时间】:2015-05-10 15:36:43
【问题描述】:

我是 laravel 的新手,并在其中创建了我的第一个控制器,我在目录 app/controllers/ContactController.php 中创建了一个文件,代码是

class ContactController extends BaseController {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        //
        echo "hieeeeeeeeeeeeeeeee";
    }


    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create()
    {
        //
    }


    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store()
    {
        //
    }


    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        //
    }


    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id)
    {
        //
    }


    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id)
    {
        //
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id)
    {
        //
    }


}

但如果我点击 url http://localhost:8000/contact 它会显示错误我们需要一张地图。我错过了什么吗???请帮助我。

更新

我也尝试添加 Route::get('contact', "contact@index");在我的 routes.php 中。

我通过 git-hub 设置了一个用户登录和注册模块,如果我点击 url http://localhost:8000/user/login

,它就可以正常工作

更新

我的 laravel 版本是 laravel 4

控制台输出为 39023 Invalid request (Unexpected EOF)

【问题讨论】:

  • 你有命名空间吗?
  • 请阅读文档。特别是关于控制器和路由:laravel.com/docs/5.0/controllerslaravel.com/docs/5.0/routing
  • @lukasgeiter 我研究过这个但没有效果。
  • 为什么-ve???我是说我是新手……
  • 那就再研究一下。控制器章节的第三句话说:控制器通常存储在app/Http/Controllers 目录中。你已经没有这样做了。

标签: php laravel controller


【解决方案1】:

我完全同意@Raviraj Chauhan 已经指出的事情。另外,我想补充一点,您的文件似乎有一个可能导致此类问题的错字:

将您的控制器类重命名为ContactController,并将包含文件重命名为ContactController.php(不是contactCtroller.php)。

然后将路由添加到您的routes.php-file

Route::get("contact", "ContactController@index");

由于 laravel 严重依赖于 Convention over Configuration 等概念,因此一般要注意常见的约定和编码实践。

正如 Lukas 还指出的那样,如果您刚刚入门,考虑切换到 Laravel 5 可能是明智之举。

无论如何,让我以推荐 laracasts 来结束,这就是我使用 laravel 学习的方式。只需几个小时即可深入了解 laravel 宇宙,而无需事先了解太多知识:

  1. Laravel 4 From Scratch
  2. Laravel 5 Funcamentals(之前不需要从Scratch过L4)

【讨论】:

  • 感谢您的参考,我会关注这个的。但问题还是一样。让我从你的参考中学习。
  • @ris 你打电话的网址是什么?
  • @ris 如果将方法重命名为getIndex()(在控制器中,而不是在路由文件中),它会起作用
【解决方案2】:

是的,您的路线有问题。

如果您想从控制器指向单个方法,则必须指定 fullControllerName@methodName 约定。

routes.php 中的路线修正为:

Route::get('contact', "contactController@index");

在使用 OOP 时,请遵循良好的类命名约定。

  1. 控制器类名应以大写字母开头。
  2. 它应该在末尾包含 Controller。

因此,请通过重命名控制器类名以及控制器文件名来进行修复,然后:

Route::get('contact', "ContactController@index");

通过简单的方式,通过命令行运行:

php artisan make:controller ContactController

【讨论】:

  • 如果您想要有用的反馈,您应该提供相同的反馈。现在到底发生了什么?这个答案也解决了我看到的问题,所以也许还有其他问题?
  • 我没有从我的控制器获得输出,404 not found error @nozzleman
  • [Mon Mar 9 19:01:11 2015] 127.0.0.1:39023 无效请求(意外 EOF)这是控制台输出
  • @ris 请注意,端口号与您问题中提供的端口号不同(8000 与 39023)...
  • @ris: 可能是你的配置有问题,你应该从头开始交叉检查。创建一个新的 laravel 项目 - 通过命令行创建控制器 - 指向路由 - 检查 URL。
猜你喜欢
  • 2016-11-09
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
相关资源
最近更新 更多