2017-11-15 7 views
0

私はaタグボタンがあるビューを持っています。ボタンをクリックすると、要求が与えられたaction view controllerに送信され、その中にaction viewという値がデータベースに保存されます。その後、ビューを別のビューにリダイレクトしています。Yii2-データプロバイダであるビューから別のビューにリダイレクトできない

私は何をしましたか?

マイビュー

<a href="<?= URL::toRoute(['ogpheader/viewsetpdf', 'id'=>$model->id])?>" name="redirect" class="btn btn-primary" id="myid">Set PDF</a> 
//this is the a tag button 

同じビューでAjax呼び出し

<?php 
$url = Url::toRoute(['/ogpheader/viewsetpdf','id'=>$model->id]); 
$script = <<< JS 
$(document).ready(function() {  

$('#myid').on('click',function(e) { 
e.preventDefault();  
var strValue = "";   
    $('input[name="selection[]"]:checked').each(function() { 

    if(strValue!="") 
     { 
     strValue = strValue + " , " + this.value; 

     } 
    else 
     strValue = this.value;  

}); 
    //alert(strValue); 
$.ajax({ 
    url: '$url', 
    type: 'POST', 
    dataType: 'json', 
    data: {data:strValue},   
    success: function(data) { 
     alert(data); 
     }, 
    }); 
    }) 
    }); 
    JS; 
    $this->registerJs($script, static::POS_END); 
    ?> 

マイアクションコントローラ

if(Yii::$app->request->isAjax && Yii::$app->request->post()) 
    { 
     $data = explode(',',$_POST['data']); 

     foreach($data as $value) 
     { 
      $m = new Ogpdetail; 
      $m -> load(Yii::$app->request->post()); 
      $m->ogp_id = $ogp_id; 
      $m->created_at = date('Y-m-d h:i:s'); 
      $m->meter_id = $value; 
      $m->meter_serial = \common\models\Meters::idTomsn($value); 

      if($m->save()) 
      { 
       $model->status = Ogpheader::$status_titles[1]; 
       $model->update(); 
       //echo "All data is saved"; 
       //exit(); 
      } 
      else{ 
       $this->renderAjax('viewcreated'); 
      } 
     } 

     //print_r($data); 
    } 
    else{ 
     $this->renderAjax('viewcreated'); 
    } 
$query = "SELECT DISTINCT ogpd.`meter_serial` AS 'Meter_Serial_Number', IFNULL(ogpd.`remarks`,'') AS 'Remarks' FROM `ogp_detail` ogpd 
         INNER JOIN `ogp_header` ogph ON ogpd.`ogp_id` = ogph.`id`"; 

    $count = Yii::$app->db->createCommand("SELECT COUNT(DISTINCT ogpd.`meter_serial`) FROM `ogp_detail` ogpd 
         INNER JOIN `ogp_header` ogph ON ogpd.`ogp_id` = ogph.`id`")->queryScalar(); 

    $dataProvider = new SqlDataProvider([ 
     'sql' => $query, 
     'totalCount' => $count, 
     'pagination' => [ 
      'pageSize' => 5, 
     ], 
    ]); 

    return $this->redirect('viewsetpdf',[ 
     'dataProvider' => $dataProvider, 
     'model' => $this->findModel($id), 
     'id' => $model->id 
    ]); 

私がSet PDFボタンをクリックすると、私はNot Found (#404)を得ています。すべてのレコードが私の望むテーブルに保存されます。

またURLhttp://localhost:225/inventory-web/backend/web/ogpheader/viewcreated/viewsetpdfですが、それは私が問題になるかわからないし、私はそれにこだわっていますhttp://localhost:225/inventory-web/backend/web/ogpheader/viewsetpdf

でなければなりません。

ご協力いただければ幸いです。

答えて

1

URLを生成するのではなく、ルートを生成しています。これを交換してみてください。これにより

<a href="<?= URL::toRoute(['ogpheader/viewsetpdf', 'id'=>$model->id])?>" name="redirect" class="btn btn-primary" id="myid">Set PDF</a> 

Html::a('Set PDF', ['ogpheader/viewsetpdf', 'id'=>$model->id], ['id' => 'myid', 'name'=>'redirect', 'class'='btn btn-primary']) 
+0

'HTML ::( '設定するPDF'、[ 'ogpheader/viewsetpdf'、 'ID' => $モデル - > ID]、 ['id' => 'myid'、 'name' => 'redirect'、 'class' = 'btn btn-primary']) 'が表示されているように見える –

+0

私はあなたが意味するものを理解していません – gmc

+0

更新されたタグは '<?'で始まり、終了しました。 html :: a( 'set PDF'、['ogpheader/viewsetpdf'、 ''、 'id' => $ model-> id]、['id' => 'myid'、 'name' => 'redirect' > 'id' => 'myid'、 'name' => 'redirect'、 'class' => 'btn btn-primary' 、 'class' => 'btn btn-primary'])?> 'はテキストとして表示されます –