我尝试从控制器中获取POST
变量:
<?= GridView::widget([
'dataProvider' => $dataProvider_products,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'label'=>'Name',
'format' => 'raw',
'value'=>function ($data) use ($model, $dataProvider_products) {
return Html::a($data['name'],['suppliers_orders/addproduct', 'order' => $model->id, 'product' => $data['id'],
'data-method'=> 'post',
'data-params' => ['dataProvider' => $dataProvider_products],
]);
},
],
'supplier_product_number',
'size',
'price_net',
],
]); ?>
参数dataProvider
将始终与URL
一起发送,并生成GET
变量。有哪些必须做的错误,dataProvider
将作为POST
变量发送?
我的控制器的一部分是:
public function actionAddproduct($order, $product){
// look for GET variable
$request = Yii::$app->request->get('data');
$dataProvider = $request['params']['dataProvider'];
// look for POST variable
$param1 = Yii::$app->request->post('dataProvider', null);
$dataProvider_suppliers_orders_products = $dataProvider;
return $this->actionView($order);
}
答案 0 :(得分:1)
首先,您要传递select r.EmpName,r.EmpID,
count(CASE WHEN d.PrdcType='A' Then 1 else 0 END) as Table1_A_Prdc_Count,
COUNT(CASE WHEN r.ExPrdc='A' Then 1 else 0 END) as CAL
from Tbl1 r
INNER join Tbl2 d on r.EmpID= d.EmpID
where r.EmpID in('X1','X2','X3') and d.EmpID in ('X1','X2','X3')
group by r.EmpName,r.EmpID,d.EmpID,d.EmpName
参数中的data-params
而不是url
参数中的设置,所以是的,无论您拉扯了什么,它都将始终作为查询字符串发送脱毛变成秃头¯\ _ _(ツ)_ /¯。
然后根据DOCS
如果属性是中列出的数据属性
options
,例如yii\helpers\Html::$dataAttributes
或data
,列表 将呈现属性,一个用于值数组中的每个元素。 例如,生成ng
生成'data' => ['id' => 1, 'name' => 'yii']
和data-id="1" data-name="yii"
'data' => ['params' => ['id' => 1, 'name' => 'yii'], 'status' => 'ok']
因此,您需要将锚点更改为
data-params='{"id":1,"name":"yii"}' data-status="ok"
但是由于你将Html::a($data['name'], ['suppliers_orders/addproduct', 'order' => $model->id, 'product' => $data['id']], [
'data' => [
'method' => 'POST',
'params' => ['dataProvider' => $dataProvider_products]
]
]);
对象传递给params它不会起作用,因为它会更改为$dataProvider
但是如果它是简单的文本那么它将起作用,否则你必须改变你的方法。
[Object Object]
的完整代码如下所示
GridView