我是Laravel的新手,所以我有这个问题:
如果我在数据库中有2个表,请说:位置和向量,我希望能够 编辑/添加/更新/删除它们,我需要什么样的模型/控制器/视图结构?
我是否为位置和向量创建控制器? 我应该创建一个设置控制器,只创建位置和向量的模型吗?
答案 0 :(得分:0)
这完全取决于你,但我会为每个逻辑创建一个模型,可能称为SettingsRepository.php
,然后只需使用该存储库即可使用该代码。您还必须修改composer.json
文件,并确保放置存储库的文件夹位于autoload
部分。
对于您的控制器,您可能只需要一个从存储库中获取数据并将其插入视图的控制器。当我想到设置时,我会想到您在应用程序的其他区域以及存储库中需要的设置,所有这些信息都可以被其他控制器轻松访问。
答案 1 :(得分:0)
模型处理与数据库的直接交互。创建“位置”模型和“矢量”模型。当你这样做时,你将扩展Eloquent模型,你将很快拥有一个知道如何添加,删除,更新,保存等的模型。 http://laravel.com/docs/eloquent
为您希望用户看到的每个页面创建一个视图。 (您最终将创建主模板视图,但现在不要担心这一点)。 http://laravel.com/docs/responses#views
控制器在视图和模型之间调整数据。在Laravel文档中有一节关于此,但我没有足够的重复点来发布超过2个链接。
以最有意义的方式对控制器功能进行分组。如果您的所有网站路线都以“/ settings”开头,那么您可能只需要一个“设置”控制器的红旗。
以下是您可能想要做的极其简化的示例。有很多不同的方法可以实现你想要的东西。这是一个例子。
// View that you see when you go to www.yoursite.com/position/create
// [stored in the "views" folder, named create-position.php]
<html><body>
<form method="post" action="/position/create">
<input type="text" name="x_coord">
<input type="text" name="y_coord">
<input type="submit">
</form>
</body></html>
// Routing [in your "routes.php" file]
// register your controller as www.yoursite.com/position
// any public method will be avaliable at www.yoursite.com/methodname
Route::controller('position', 'PositionController');
// Your Position Controller
// [stored in the "controllers" folder, in "PositionController.php" file
// the "get" "post" etc at the beginning of a method name is the HTTP verb used to access that method.
class PositionController extends BaseController {
public function getCreate()
{
return View::make('create-position');
}
public function postCreate()
{
$newPosition = Position::create(array(
'x_coord' => Input::get('x_coord'),
'y_coord' => Input::get('y_coord')
));
return Redirect::to('the route that shows the newly created position');
}
}
// Your Position Model
class Position extends Eloquent {
// the base class "Eloquent" does a lot of the heavy lifting here.
// just tell it which columns you want to be able to mass-assign
protected $fillable = array('x_coord', 'y_coord');
// yes, nothing else required, it already knows how to handle data
}