【问题标题】:A ViewModel for a Contact Form in LaravelLaravel 中联系表单的 ViewModel
【发布时间】:2014-12-05 08:04:03
【问题描述】:

我对 MVC 并不陌生,但我才刚刚开始使用 Laravel。在 ASP.NET MVC 中,我们有 ViewModels,它基本上是一个可以传递给视图的数据对象。然后视图可以按照它希望的任何方式使用 ViewModel。

Laravel 中有这样的东西吗?我想创建一个 ViewModel,我可以将它传递给我的联系人视图并让它围绕它创建一个表单脚手架!

我目前拥有的是:

路线

Route::get('/contact', array('as' => 'contact', 'uses' => 'HomeController@contact'));

Route::post('/contact', array('as' => 'contact', 'uses' => 'HomeController@postContact'));

控制器

<?php

class HomeController extends BaseController {

    public function contact()
    {
        return View::make('contact');
    }

    public function postContact()
    {
        $formData = Input::all();

        return View::make('contact');
    }

}

另外,你预见到我的路由和控制器代码有什么问题吗?在 ASP.NET MVC 中,只要动词不同(POST / GET),我们就可以有一个名称完全相同的路由。

我的联系表单有 3 个文本字段(姓名、电子邮件和主题)和一个文本区域(消息)。

【问题讨论】:

  • PHP 中不能有相同的方法,不幸的是这里没有重载。

标签: php laravel viewmodel


【解决方案1】:

您可能正在谈论view/model presenter,它是您的modelview 之间的另一层,在这种情况下,您可以构建自己的或使用现有的包:

  1. ShawnMcCool/laravel-auto-presenter

  2. robclancy/presenter

另请阅读this article 以清楚了解presenter

【讨论】:

    【解决方案2】:

    在 Laravel 中,我们也有视图模型。您可以使用来自 github 的视图模型包。这是 GitHub 上包的链接:View models in Laravel
    您可以通过运行从 composer 安装包:

    composer require spatie/laravel-view-models
    

    您还可以使用 nwidart 更好、更轻松地管理您的 mvc 模型。 nwidart 为您提供 laravel 应用程序中的模块功能。更多关于nwidart的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2017-10-11
      • 2018-02-13
      • 1970-01-01
      相关资源
      最近更新 更多