2017-05-14 64 views
0

我有一个名为'学生'的控制器,有两个叫'索引'和'添加'的动作。 我想为每个操作加载不同的css文件。到目前为止,我试过的是,我已经导入了Html Helper,创建了它的对象并调用了它的css方法。当我运行它时,它不会抛出任何错误,也不会显示预期结果。意思是,它不是在我的视图中动态加载css文件..我如何动态加载控制器在不同视图中的css文件?如何动态加载控制器中每个动作的css文件?

代码: -

<?php 

App::import('Helper','Html'); 

class StudentController extends AppController 
{ 
    public function index() 
    { 
//  $current_controller = $this->params['controller']; 
//  echo $current_controller; 

     //$view=new View(new Controller($current_controller)); 

     //$Html=new HtmlHelper($view); 
     $Html=new HtmlHelper(new View(null)); 
     //$html=new HtmlHelper(new View()); 
     $Html->css('cake.generics'); 

     //echo ; 
     //$this->Html->css("cake.generics"); 
    } 

    public function add() 
    { 
//  $current_controller = $this->params['controller']; 
//  echo $current_controller; 

     $html=new HtmlHelper(new View(null)); 
     $html->css("mystyle.css"); 

    } 

} 

回答

1

你也可以创建视图>元素全局布局文件一样default_assets.ctp

后,在您的默认布局文件视图>布局文件夹添加文件一样,default_layout.ctp

后访问此在您的控制器像

public function index(){ 
$this->layout = "default_layout"; 
} 
1

你可以做到这一点在视图文件,例如

//in your View/Students/add.ctp 
$this->Html->css('yourstyle', array('block' => 'yourStyle')); 

//in your layout file 
echo $this->fetch('yourStyle'); 

同样用js文件

// in your view 
$this->Html->script('yourjs', array('block' => 'yourJs')); 

//in your layout file 
echo $this->fetch('yourJs'); 
+0

虽然你的答案是不是从控制器动作添加CSS/JS。但通过将您的代码与我自己的逻辑进行集成,我能够实现它。谢谢。 :) 这是我的代码: - 在索引操作中添加了下面这行: - $ this-> set('mycss','custom'); 并从布局文件访问mycss变量。 :) 。 –

0

我得到了这样的工作,

我在控件中添加了“mycss”变量奥勒,索引操作: -

$this->set('mycss','custom'); 

而且从访问布局文件,这个mycss变量: -

if(isset($mycss)){ 
    $this->Html->css("$mycss"); 
} 

和它的工作。