$此对象在带有角度的已加载模板中

时间:2018-12-14 09:48:27

标签: php html angularjs codeigniter

我正在尝试在Codigniter + AngularJs页面中实现一些ACL内容。 我正在使用ng-route,因此我的“主视图”页面中有该行:

  <div ng-view></div>

我正在使用ion-auth库来帮助实现ACL。

这是我的控制者:

public function __construct()
{
    parent::__construct();
    $this->load->database();
    $this->load->library(['ion_auth', 'form_validation']);
    $this->load->helper(['url', 'language']);
    $this->lang->load('auth');
}

public function index()
{
    if (!$this->ion_auth->logged_in())
    {
        // redirect them to the login page
        redirect('/login', 'refresh');
    }
    else
    $this->load->view('master_view');
}

这是我的ng-route使用:

var app = angular.module("myApp", ["ngRoute","bw.paging"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "/app/templates/cars_list.php",   
    controller: "CarsController"
    })
});

当我尝试在主视图中使用ion auth的功能时,它可以正常工作:

<?php if($this->ion_auth->in_group('admin')):?>
<a class="nav-item nav-link" href="index.php#!/list">Users</a>
<?php endif;?>

但是当我在加载的模板(cars_list.php)中尝试该行时,它什么也没做。 请帮助我。如何在模板中使用$ this? TIA!

1 个答案:

答案 0 :(得分:1)

您不能在模板内部使用$this,而是可以这样做。

public function index()
{
    if (!$this->ion_auth->logged_in())
    {
        // redirect them to the login page
        redirect('/login', 'refresh');
    }
    else{
        $data = [];
        $data["allowed"] = $this->ion_auth->in_group('admin');
        $this->load->view('master_view',$data);
    }
}

可见

<?php if($allowed):?>
<a class="nav-item nav-link" href="index.php#!/list">Users</a>
<?php endif;?>