Как получить название модели, используемой представлением в функции контроллера? - PullRequest
0 голосов
/ 25 июня 2019

Мое представление о вызове функции - index.ctp. Контроллером является AdvertisementsController, а функцией - change_status. Теперь дело в том, что это представление не относится к этому контроллеру, поэтому к модели.Теперь я хочу получить название модели, используемое представлением в функции.Как я могу?

$ modelname = Inflector :: classify ($ this-> params ['controller']);Я использовал это, но это не так, потому что несколько представлений, принадлежащих другим моделям, вызывают функцию.

Я также определил ajax-данные в ctp, но не получаю их.

function changeStatus(){
    $('.change-status').on('change',function(){
          $("#loading_image").show();
        var status = $(this).val();
        var userId = $(this).attr('emp-id');
        var modelname = 'ClAdvertisement';
        $.ajax({
            type: "POST",
            url: adminUrl+'advertisements/change_status',
            data: {'data[User]':{'status':status,'id':userId,'modelname':modelname}},
            dataType: 'json',
            error:function(a,b,c) {
                $("#loading_image").hide();
                bootbox.alert({
                    message: 'Unable to process request. - ' + a,
                    className: "bootbox-m"
                }); 
            },             
            success: function (data) {
                  $("#loading_image").hide();
                  if(data.success == true){
                        showMsg('success',data.msg);
                  }else{
                        showMsg('error',data.msg);
                  }
            }
        });
    });
}

В контроллере я использовал эти $ this-> request-> data ['User'] ['modelname'];

Полная функция - публичная функция change_status () {

    $this->_is_user_login ();
    $this->layout = false;
    // $modelname = Inflector::classify( $this->params['controller']);
    if($this->request->is('ajax')) {

        if($this->request->is('post')) {
            prd($this->request->data['modelname']);
            $this->request->data[$modelname]['id'] = base64_decode($this->request->data[$modelname]['id'] );        
            $status = $this->request->data[$modelname]['status'];
            $response = array();

            if($this->$modelname->save($this->request->data)) {

                $response = array('success' => true,'message' => 'Status has been updated successfully.');
            }else{
                $response = array('success' => false,'message' => 'Opps error please try again.');
            }   
        }else{
            $response = array('success' => false,'message' => 'Invalid request.');
        }
        echo json_encode($response);
        die;
    }else{
        $this->redirect('/');
    }

}

Просто название модели.

...