从Route Web.php的/ profile / {username}关键字中删除/ profile /不起作用

时间:2019-06-29 14:37:48

标签: laravel

我有一条路线

<>
  <Row>
    <Table columns={columns} dataSource={this.state.dataSource} />
  </Row>
  <Row type="flex" gutter={10} style={{ marginBottom: 10 }}>
    <Col>
      <Typography>Name Auto Complete</Typography>
    </Col>
    <Col>
      <AutoComplete
        dataSource={data.map(person => person.name)}
        onChange={nameSearch =>
          this.setState({
            dataSource: data.filter(person => person.name.includes(nameSearch))
          })
        }
        allowClear
      />
    </Col>
  </Row>
  <Row type="flex" gutter={10} style={{ marginBottom: 10 }}>
    <Col>
      <Typography>Name Search</Typography>
    </Col>
    <Col>
      <Input.Search
        allowClear
        onSearch={nameSearch =>
          this.setState({
            dataSource: data.filter(person => person.name.includes(nameSearch))
          })
        }
      />
    </Col>
  </Row>
  <Row type="flex" gutter={10}>
    <Col>
      <Typography>Auto Complete Search</Typography>
    </Col>
    <Col>
      <AutoComplete dataSource={data.map(person => person.name)}>
        <Input.Search
          allowClear
          onSearch={nameSearch =>
            this.setState({
              dataSource: data.filter(person =>
                person.name.includes(nameSearch)
              )
            })
          }
        />
      </AutoComplete>
    </Col>
  </Row>
</>;

如果我将其保留在文件中间,则此后的所有路由均不起作用。

如果我将其保留在底部,则一切正常。

此外,如果我添加任何个人资料(如Profile),则可以。

Route::get('/{username}', 'ProfileController@profile')->name('profile.view');

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这就是应该使用通配符来匹配所有内容的方式。因此,要么将其放在文件的底部,它将用作后备路由,这意味着它上面没有任何内容应匹配,然后它将后退到该路由。或者,您可以使用正则表达式将用户名与其他方式匹配,从而使其不同于其他路由,例如:

Route::get('{username}', 'ProfileController@profile')
    ->name('profile.view')
    ->where('username', 'YOUR REGEX HERE');

我会选择您所展示的并且已经可以使用的那个

Route::get('profile/{username}', 'ProfileController@profile')
    ->name('profile.view');

// or
Route::get('user/{username}', 'ProfileController@profile')
    ->name('profile.view');