我应该如何为Laravel5.2中的每个页面制作路线?

时间:2017-02-05 03:25:15

标签: php laravel-5

我是L5的新手,在这里,stackoverflow。 我正在根据存储库模式制作博客服务。 现在我已经将一些Service类(如ImageService,PostService,CommentService ...)和Repositories作为数据访问对象。

从现在起,我将发表意见。首先,"首页"我想要。 需要注入2个服务类。 " ImageService(allUsersImages)"," PostService(allUsersPosts)"。

我在这里停下来......打扰最好的方式。 请告诉我,如果我的想法很好,或者有什么办法吗?

1.Creating Controller

class IndexController extends Controller
{
    public function top(ImageRepository $image, PostRepository $post)
    {
        $images= $image->allUsersImages();
        $posts= $post->allUsersPosts();

        return view('/index')
                 ->with('images', $images)
                 ->with('posts', $posts);
    }

    public function mypage(ImageRepository $image, 
                           PostRepository $post, $id)
    {
        $images= $image->allUsersImagesById($id);
        $posts= $post->allUsersPosts($id);

        return view('/index')
                 ->with('images', $images)
                 ->with('posts', $posts);
    }
                          .
                          .
                          .
                          .
                   prepare methods for each page

    }

2. Creating routing

    Route::get('/top', 'IndexController@top');
    Route::get('/mypage', 'IndexController@mypage');
                    .
                    .
                    .

1 个答案:

答案 0 :(得分:0)

我认为你已经做的事情也很不错。

class IndexController extends Controller
{
    public function top(ImageRepository $image, PostRepository $post)
    { }
}

当你写这样的内容时,Laravel Dependancy Manager会将ImageRepositoryPostRepository注入function top() {}

现在你的问题是,有没有更好的方法呢?

<强> IMHO: 您无需要求依赖经理为您完成此项工作。 只需使用此功能中的ImageRepositoryPostRepository即可。

    class IndexController extends Controller
    {
        public function top()
        {
              $image_repository = new ImageRepository(); 
              $post_repository = new PostRepository();
        }
    }

现在我所理解的是ImageRepositoryPostRepository是你的DAL(Data Access Layer)或者是ORM (Models)的包装器,那么为什么要使用模型包装器,为什么不直接使用models,因为您没有在单页访问中共享存储库的方法。只需直接调用模型即可。这些是laravel中安全和常见的做法。