2013-01-03 98 views
1

我試圖用PHP來生成一個JavaScript文件。我已經包含了該文件,並且所有腳本都在其中工作。我想不出我是如何將一個參數傳遞給這個文件的?CakePHP,將參數傳遞給js.php文件?

從控制器傳遞參數到視圖我使用:

$this->set('object_models', $object_models); 

要從視圖它傳遞給一個元素i使用:

echo $this->element('pageElement', array('object_model' => $object_model)); 

林包括我js.php文件通過在視圖與添加它:

echo $this->Html->script('modelDrawer.js.php?', false); 

回答

1

你有沒有考慮過使用parseExtensions和包括您的JS文件作爲您可以直接執行邏輯的控制器的視圖?

這與rss feeds和xml文件與Cake的生成方式類似。

See this article

UPDATE

轉到您的routes.php文件的文件,並添加行Router::parseExtensions('js');

然後,創建一個名爲控制器,本作的緣故,DynamicController.php - 粘貼這裏有:

class DynamicController extends AppController { 

    public $uses = array(); 

    public function modelDrawer() { 
     // logic in here 
     $this->set('object_models', $object_models); 
    } 
} 

創建一個vi EW文件夾視圖文件:

/app/View/Dynamic/js/model_drawer.ctp

在這種model_drawer.ctp文件,你可以把你想被cakeified視圖/腳本邏輯。

然後,您可以打電話給你的腳本是這樣的:

<script type="text/javascript" src="/dynamic/modelDrawer.js"></script>

給一個嘗試!

+0

感謝您的輸入!我試圖讓文章探索工作,但我沒有..可能很多的語法,自它被寫入以來已被更新..你願意幫助我與通知什麼變化? =) – Sultanen

+0

非常感謝您的更新!更清晰=)我仍然有一個問題,雖然我已經做了你告訴我,但是當我嘗試訪問/ myProject/dynamic/modelDrawer.js我得到一個錯誤_「致命錯誤:最大函數嵌套級別'100'到達,墮胎!「_。在model_drawer.ctp我得到這只是爲了測試它:_「window.onload = function(){ alert('testing'); }」_ – Sultanen

+0

聽起來像你試圖遞歸添加該腳本 –