我开始使用Laravel 4,它似乎是一个很好的选择,无论如何在编写我的第一个项目之前,我想了解我的通常方法是否可以使用laravel.
通常我保持三元组的后端和前端分隔在/ modules文件夹下,如下所示:
/modules
/backend
/config
/controllers
/models
/migrations
/ecc..
/frontend (and so on...)
Run Code Online (Sandbox Code Playgroud)
有了laravel,我不确定如何管理这个.我正在尝试使用软件包,但php artisan workbench me/mypackage --resources
不构建整个文件夹结构...在哪里放置控制器和模型,以及如何设置路由?
然后我发现这个链接启用类似模块的系统.那么,我应该遵循什么方法来保持laravel方式?
And*_*yco 13
好吧,让我们开始......
首先,我Andreyco\Cart
使用Artisan 创建了包.
包装及其结构
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------lang
|-------migrations
|-------views
|-----tests
|-----vendor
Run Code Online (Sandbox Code Playgroud)
在答案中,我将使用这个精确的包作为示例.
想象一下,该文件夹workbench/andreyco/cart/src
是应用程序文件夹.如果你这样做,你应该知道大部分答案.(其实App也是包)
问: 如何设置路线
A:创建文件 - > workbench/andreyco/cart/src/routes.php
.这个完成了.
问: 在哪里放置控制器和模型
A:只需在那里创建controllers
和models
文件夹.
所以TestController
它将位于workbench/andreyco/cart/src/controllers/TestController.php
文件中.与模特一样.
目录树看起来像这样
|workbench
|-andreyco
|---cart
|-----public
|-----src
|-------Andreyco
|---------Cart
|-------config
|-------controlers
|-------lang
|-------migrations
|-------models
|-------views
|-----tests
|-----vendor
Run Code Online (Sandbox Code Playgroud)
我创造了routes.php
,TestController.php
和TestModel.php
// workbench/andreyco/cart/src/routes.php
<?php
Route::get('test', 'Andreyco\\Cart\\Controllers\\TestController@index');
// workbench/andreyco/cart/src/controllers/TestController.php
<?php namespace Andreyco\Cart\Controllers;
use Andreyco\Cart\Models\TestModel;
class TestController extends \BaseController
{
public function index()
{
return TestModel::printCurrentLocation(__DIR__);
}
}
// workbench/andreyco/cart/src/models/TestModel.php
<?php namespace Andreyco\Cart\Models;
class TestModel extends \Eloquent
{
public static function printCurrentLocation($location)
{
return "Testing package controller, script is located at: {$location}";
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用了名称空间,所以您应该这样做.
命名空间让您的生活更轻松.
重要:创建这些文件后,您需要更新composer.json
文件,以便可以自动加载类
// composer.json
"autoload": {
"classmap": [
...
"workbench/andreyco/cart/src/controllers",
"workbench/andreyco/cart/src/models"
]
},
Run Code Online (Sandbox Code Playgroud)
在此之后,使用composer dump-autoload -o
命令转储更改.
问: 那么,我应该遵循什么方法来保持拉拉维尔的方式?
答:在我看来,你应该坚持使用包装.至少,我愿意.这就是Laravel的设计方式.
我希望这对你有所帮助,祝你好运!
编辑
视图在这里不是问题.它们的工作方式与主应用程序包一样.
// workbench/cart/src/view/foldername/viewname.blade.php
<h1>Testing view file.</h1>
{{ "Blade" }} syntax is parsed as well, no problem here.
Run Code Online (Sandbox Code Playgroud)
从包的控制器返回视图非常简单
public function index()
{
return \View::make('cart::foldername.viewname');
}
Run Code Online (Sandbox Code Playgroud)