<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/PersistenceContext.xml
</param-value>
</context-param>
Я инициализировал свой PersistenceContext.xml
в <context-param>
, потому что все мои сервлеты будут взаимодействовать с базой данных в рамках MVC.
Howerver,
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ApplicationContext.xml
</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.organisation.project.rest</param-value>
</init-param>
</servlet>
в вышеупомянутый код, я настраиваю трикотаж и ApplicationContext.xml
только для слоя отдыха. Для этого я использую </init-param>
Если вы хотите, вы можете просто сделать переадресацию со своего промежуточного программного обеспечения:
if (something in my database have status == 0) {
return redirect()->route('route_a_name');
} else {
return redirect()->route('route_b_name');
}
Просто убедитесь, что вы назовете свои маршруты в своем routes/web.php
.
Пример:
Route::get('/route_a', 'YourController@RouteA')->name('route_a_name');
Редактирование:
На основании дополнительной информации, которую вы предоставили, промежуточное программное обеспечение для того, что вы пытаетесь достичь, является скорее сверху. Вместо этого вы можете просто использовать один маршрут и передать параметр статуса. Для получения дополнительной информации о параметрах маршрутизации см. https://laravel.com/docs/5.6/routing#route-parameters .
Пример:
Route::get('/your_route/{status}', 'YourController@ControllerAction');
Затем в контроллере обработайте логику, основанную на статусе:
function ControllerAction(Request $request, $status) {
if ($status == 0) {
//Show view for A
} else {
//Show view for B
}
}
Вы можете использовать имя маршрута и просто использовать его где угодно.
//define route
Route::get('/A', 'ControllerA@methodA')->name('A');
Route::get('/B', 'ControllerB@methodB')->name('B');
В вашем контроллере просто используйте имя маршрута
blockquote>$routeName = ['A','B']; //route name If (something in my database have status == 0) { return Redirect::route($routeName[0]); //ROUTE A } else { return Redirect::route($routeName[1]); //ROUTE B }
В противном случае вы можете сделать что-то, получая параметр группы маршрутов
blockquote>Route::group(['prefix' => '/test/{id}'], function() { //you can't access parameter directly here $id = explode('test/',url()->current())[1]; //get parameter with different way if($id == 1){ exit('do something'); }else{ exit('do others'); } });
//define routes
. Я не знаю, как получить доступ к параметру из других маршрутов в инструкции if
.
– Victordb
13 July 2018 в 16:41
Route::group(['prefix' => '/'], function($id)
.
– Victordb
13 July 2018 в 16:56
Route::get('/your_route/{status}', 'YourController@YourAction')
– JPark 13 July 2018 в 16:49