2016-08-22 78 views
0

要开发一个项目,我要创建一些在所有控制器中都很常见的方法。在laravel 5.2中编写常用方法

在此之前,我已经使用codeigniter,然后在core目录中写入MY_Controller类,然后将控制器扩展到控制器目录中的所有控制器中。

同样我想在Laravel以内做。但我很困惑,我应该在哪里编写常见方法,如send_email,validate_captcha,ajax_file_upload以及其他在整个应用中保持相同的常用方法。

所以,请给我一个定义这样的类或中间件的好方法。应该怎么做才能创建它?

+0

你应该发布你已经尝试过,以实现这一目标。你有很多可能性,对于你的每一个需求它可能是一个不同的。如果你想验证一个验证码,你可以编写一个RequestValidator并将它扩展到你的其他验证器中,但是你不必强制使用验证器,这样你就可以创建你自己的控制器并提供验证方法,并让其他控制器扩展它 –

回答

0

好的。让我建议一些东西

  1. 需要编写适用于所有控制器的方法。您
    可以/应该修改App\Http\Controllers\Controller.php。因为全部 Laravel中的控制器扩展它
  2. 需要编写可在整个应用程序中使用的类。这是 从未容易

步骤1:写你app文件夹中所需的任何类。并遵循psr-4公约

第2步:注册Laravel申请 在App\Providers\AppServiceProvider。在register()方法。添加

$this->app->bind('bindname', function ($app) { 
    return new \App\YourClass; 
    // If you want to inject other class to YourClass contructor 
    // return new \App\YourClass($app->make('otherbindname')); 
}); 

步骤3:使用它。有几种方法来访问YourClass在整个应用:)

app()->make('bindname'); 

app('bindname'); 

app()['bindname']; 

\App::make('bindname'); 

//etc 
0

,如果你写的一种方法,其是相同的所有页面在这种情况下,在laravel并在开机使用的服务提供商服务(方法在课堂内部,并成为所有页面的全球

+0

欢迎[Stack Overflow](http://stackoverflow.com/)!请阅读[我如何写出一个好答案](http://stackoverflow.com/help/how-to-answer)? –

+0

谢谢!!!我们在这里解决不讨论,如果你不明白如何做到这一点,只要问我 – 2017-09-25 06:08:43

+0

如果你认为基于配置文件,你可以判断每个人而不是爆炸兄弟。你是成功的良好轨道。感谢您睁开我的眼睛。 :) – 2017-09-26 06:21:51