【问题标题】:Check if a user is a subscriber and display X route else display Y route检查用户是否是订阅者并显示 X 路线否则显示 Y 路线
【发布时间】:2021-05-18 13:22:50
【问题描述】:

在我的项目中,我有一条路线可以显示如下所示的主题。

Route::get('/voting-topics', [PublicTopicController::class, 'index'])->name('public-topics');

投票主题页面显示从我的数据库中提取的主题列表,这些主题被标记为公开。

我面临的问题是我还想为订阅者显示完整的主题列表。

目前,我正在为订阅者使用这条路线

Route::group(['middleware' => ['subscriber']], function () {
    Route::get('/dashboard/topics', [MemberTopicController::class, 'topics'])->name('dashboard.topics');
});

我认为这不是最好的方法,我更希望将所有主题都放在 /topics 上,但只为没有订阅者显示公共主题。

我想我的问题是,如果用户是订阅者并执行类似操作,有没有办法检查我的路线。

if( subscriber()->user() ) {
    Route::post('/topics', [TopicController::class, 'index'])->name('topics');
} else {
    Route::post('/topics', [TopicController::class, 'publicTopic'])->name('topics');
}

【问题讨论】:

    标签: laravel laravel-routing laravel-8


    【解决方案1】:

    我不会声明两条不同的路由,而是声明一条路由,然后我会在控制器中根据订阅者状态决定要做什么。

    类似:

    Route::get('/topics', [TopicController::class, 'topics'])->name('topics');
    

    在您的控制器中:

    public function topics() {
        if (subscriber()->user()) {
            return $this->subscriberTopics();
        } else {
            return $this->publicTopics();
        }
    }
    
    
    private function publicTopics() {
    // public topics stuff
    }
    
    private function subscriberTopics() {
    // subscriber topics stuff
    }
    
    

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 2020-08-21
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      相关资源
      最近更新 更多