【发布时间】:2016-09-24 23:34:48
【问题描述】:
我在我的项目中使用 URL 重写规则和 URL 管理器。这是我的 URLManager 规则的代码:
'rules' => [
'/'=>'site/index',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>/<type:(admin|driver|user)>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>/<type:(admin|driver|user)>/<id:\d+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>/<type:(admin|driver|user)>/<_:\w+>' => '<module>/<controller>/<action>',
],
问题在于 DataTables 在 URL ?_=1474714889055 中发送带有额外参数的数据,这会搞乱一切。我添加了最后一行代码以允许此参数或 Datatable 添加的任何其他垃圾数据。
如何删除此代码或允许它在 URL 中而不影响路由?
问候
编辑:
public function actionVerified()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$expression = new \yii\db\Expression('CONCAT(`driver_details`.`first_name`, " ", `driver_details`.`last_name`) as `driver_name`');
$bookings = \app\models\Bookings::find()
->select(["bookings.*",
"TIME_FORMAT(booking_start, '%h:%i %p') as booking_start",
"TIME_FORMAT(booking_end, '%h:%i %p') as booking_end",
"users_main.name as verified_by_name",
"user_details.name as booked_by",
"user_details.contact as contact",
new \yii\db\Expression("CONCAT('STARWAY-BKNG-',bookings.id) as id_show"),
$expression
])->joinWith('userDetail')
->joinWith('driverDetail')
->joinWith('usersMain')
->where(['verified'=>1, 'canceled'=> 0, 'completed'=>0])->asArray()->all();
foreach ($bookings as $key => $booking) {
unset($booking['userDetail']);
unset($booking['driverDetail']);
unset($booking['usersMain']);
$booking_send[] = $booking;
}
if(!isset($booking_send)){
$booking_send = [];
}
return $booking_send;
}
【问题讨论】:
-
?_=1474714889055应该不会影响任何事情,除非您在操作中依赖于_。因为这只是一个查询参数,如果您不需要它,您可以完全忽略它。你能告诉我们你的行为在哪里弄乱了你的东西吗?? -
@leninhasda 这是 URL
http://project.local/api/booking/verified/admin/?_=1474714889055,我用这个?_得到 404,如果我删除它,url 可以工作 -
好的,我试图重现您的问题:制作了一个
api模块,制作了一个“预订”控制器,在其中制作了一个verified方法,上面只有一行echo 'hello';。然后我在我的配置文件中添加了你的rules(没有列表行),它仍然可以使用像你这样的url:http://localhost/yii2-test/api/booking/verified/admin/?_=1474714889055。你能展示你的verified方法吗? -
我正在使用经过验证的操作代码更新我的答案
-
@leninhasda 你能分享你的 .htaccess 代码吗?
标签: javascript url-rewriting datatables yii2