【问题标题】:Validate route {prop} on request [closed]根据请求验证路线 {prop} [关闭]
【发布时间】:2019-09-05 12:49:48
【问题描述】:

大家好,我如何根据请求验证路线 {prop}

示例:
http请求: - www.domain.com/page/4/name_of_page

代码:
$Route->get('page/{id}/{pageName}');

我想复制一些类似于 laravel 路由请求。

Laravel 如何在后台工作,他如何根据 uri 请求替换道具 - 我正在尝试使用正则表达式来更新路线,所以当我检查路线是否存在时,道具已经被替换。但是当我有第二个道具 {pageName}

时不起作用

解决这个问题的最佳方法是什么?

感谢您的宝贵时间

【问题讨论】:

  • 这个问题恕我直言,基于太多意见,您应该给我们一些示例代码和明确的错误声明。 “解决这个问题的最佳方法”不是编程问题。

标签: php regex laravel routes uri


【解决方案1】:

您不能直接验证路由{prop}

使用请求文件

class YourRequest
{

    public function rules()
    {
        return [
            'pageName' => 'required|max:255',
            'id' => 'required|exist:posts',
        ];
    }

    public function all()
    {
        $data = parent::all();
        $data['id'] = $this->route('id');
        $data['pageName'] = $this->route('pageName');

        return $data;
    }

    public function authorize()
    {
        return true;
    }
}

在控制器中使用验证

public function store(Request $request, $id, $pageName)
{

 $request->request->set('pageName', $pageName);
 $request->request->set('id', $id);

 $validatedData = $request->validate([
        'id' => 'required|exist:posts',
        'pageName' => 'required|max:255',
    ]);
}

【讨论】:

  • 问题是。我想成为动态{props}。例如,我使用 {id} 和 {pageName}。但也可以是其他东西。也许唯一的解决方案是让 prop 像 1 一样静态 - $Route->get('page/{prop}/{prop}', 'PageController'); 用 uri 替换 de {prop}控制器但我不确定这是否是最佳选择。
  • 您不能在路由中使用同名 $Route->get('page/{prop}/{prop}', 'PageController'); 道具。如果要将pageName 设置为可选,请使用$Route->get('page/{prop}/{pageName?}', 'PageController'); 代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多