Yii2.0 + Angular Js Post Sorunu

Merhaba arkadaşlar.

Yii2.0(backend) + Angular JS(frontend) olarak bir yapı kurmaya çalışıyorum.

Angular tarafından Yii controller tarafına post gönderiyorum ama hata dönüyor. Kodlarım hata aşağıdaki gibi. Post değil de get yapınca, controllerdaki veriyi alabiliyorum ama post yapınca sorun oluşuyor.

Gönderdiğim kod :




$http.post(Config.API.url + '/kullanicilar/login',params).success(function(response){


                veri.resolve(response);

                // success

            }).error(function (response){


                veri.reject(response);

                

            });



Dönen hata:




code: 0

message: "Unable to verify your data submission."

name: "Bad Request"

status: 400

type: "yii\web\BadRequestHttpException"



Yardımcı olabilir misiniz?

Yii2 controller code?

Denemek için fonksiyon içeriğini doldurmadım.


<?php


namespace backend\controllers;

use Yii;

use yii\filters\AccessControl;

use yii\web\Controller;


class KullanicilarController extends Controller{

    

    public function actions(){

        $actions = parent::actions();

        unset($actions['create']);

        unset($actions['update']);

        unset($actions['view']);

        unset($actions['index']);

        unset($actions['delete']);

        return $actions;

    }


    public function actionLogin(){

        

        $kullanici_adi  = Yii::$app->request->post('kullanici_adi');

        $sifre          = Yii::$app->request->post('sifre');

        return "Test";

     


    }

}



post key lerini kontrol etmeni öneririm… ya null, yada farklı bir isimle gidiyordur…

controller.js den params olarak gelen değişken içeriği şu şekilde geliyor.


Object {kullanici_adi: "Şeref", sifre: "123456"}

params içeriğini kedim oluşturup post etmeyi denedim. Yine aynı hata geliyor.




var params = {

                kullanici_adi : 'ŞEREF',

                sifre : '123456'

        };



Çözemedim bir türlü.

Login action’ında aşağıda dönen veriyi gönderir misin?




print_r($_POST);



Login action’ına veriyi gönderemiyorum.$http.post kısmına kadar veriler geliyor. Ama aşağıdaki kısım çalıştığında hata dönüyor. Bu nedenle Yii tarafına veri gitmiyor.




$http.post(Config.API.url + '/kullanicilar/login',params).success(function(response){


                veri.resolve(response);

                // success

            }).error(function (response){


                veri.reject(response);

                

            });



ozaman sorunun yii tarafında deil de angularJs tarafında olabilir mi?

Zira sorun angular tarafındaysa burdan yardım edemeyiz… bilgim yok…

Hangi tarafta olduğundan emin değilim. Angular tarafında olsa get yaptığımda veriyi alamazdım diye düşünüyorum. Yii tarafına post göndermek için özel bir ayarlama yapılıyor mu? Özel bir ayarı yoksa, Angular tarafı için biraz daha araştırma yapayım.

CSRF kontrolü var.

Tüm yardımların için teşekkür ederim. Bir inceleyim. Umarım bir çözüm bulabilirim.

Rica ederim. Elimizden geldiği kadar…

CSRF’yi araştırdığımda post işlemi için requestde ki enableCsrfValidation ayarını false yapmam gerektiği konusunda bilgiye ulaştım.

Main.php de bu ayarı kapattığımda, post işlemini sıkıntısız olarak gerçekleştirdim.





request =>[

'parsers' => [

		'application/json' => 'yii\web\JsonParser',

	],

	'enableCookieValidation' => false,

	'enableCsrfValidation' => false,

]



Şuan ki sorunu bu şekilde çözdüm. Sonraki aşamalar da bu ayarı kapatmak ne gibi sorun yaratır, onu da yapıyı kurdukça belli olacak.

Tekrar yardımların ve ilgin için teşekkür ederim.

İyi çalışmalar.

Aşağıdaki linkleri inceler misin?

http://stackoverflow.com/questions/31759426/yii2-how-can-i-manage-angularjs-post-request-in-yii2

http://stackoverflow.com/questions/30274685/yii2-action-dont-return-any-result-to-angular-http-post-request

http://www.ngroutes.com/questions/1cdf47d/yii2-action-dont-return-any-result-to-angular-http-post-request.html

İngilizce bilgim yok denecek kadar az ama doğru cevaplardaki kodları aplication.js dosyama eklemiştim.

main.php de de response ayarını yaptım ama zaten veri json olarak geldiği için bunu tekrar kapatmıştım.




'response' => [

        //'format' => yii\web\Response::FORMAT_JSON,

        'charset' => 'UTF-8',

        ],



Linkleri tekrar inceleyip, yapıyı ona göre tekrar düzenlemeye çalışacağım.

Teşekkürler.