0

如何从视图中调用组件中的函数?(ctp文件)

我正在使用这样的东西:

App::import('Component', 'YourComponent');
$theComponent = new YourComponent();
$theComponent->yourMethod();

我希望在$theComponent->yourMethod();单击按钮时执行该行,而是在页面加载时执行...

这是代码的一部分:

<script type="text/javascript">
function assign()
{
    var links_list = [];
                var links =document.getElementById('unassignedUsers').getElementsByTagName('a');
                for(var a in links) {
                    if(typeof links[a] == undefined) continue;
                    links_list.push(links[a].innerHTML);} var str =links_list.toString();
                    var array = str.split(',');
                    alert(array);
                 }
   <?php App::import('Model', 'Account');
    $account = new Account();  
   $account->insertPos();?> 
} 

<button id="button" name="button" onClick="assign();"> Save Changes </button>  
//this is the button i need the function to be executed when i click....

请告诉我该怎么做才能使javascript中的php代码仅在单击按钮时才执行?

4

2 回答 2

0
echo $form->create('Account', array('action' => 'insertPos'));
echo $form->button('Save Changes', array('type' => 'submit'));
echo $form->end();
于 2012-04-22T09:17:41.753 回答
0

cakephp 和互联网都适用于特定的架构。有了 Cakephp,就更容易“打破”架构并创建变通方案,这在 Internet 上非常困难。互联网使用客户端-服务器架构,其中 HTML、Javascript 和 CSS 在客户端运行,也称为浏览器,而 php(以及其他语言)在服务器端运行。服务器仅在加载 HTTPRequests(最简单的是 AJAX)后与客户端交互。只有 HTTPRequest 会触发服务器端运行,并且总是通过 URL 完成。因此,以下是您应该遵循的粗略模型。

客户端 <---- HTTPRequest ----> 服务器端

鉴于此并使用 Cakephp,为了遵循最佳实践并从 Cakephp 获得最大收益,您的保存请求应发送到具有以下 URL 的控制器:
www.yoursite.com/controller-name/save

从这里开始,假设所有值都在表单元素中,您的控制器将只会收到表单元素中的值。然后在控制器内应该发生以下情况
$this->Account->insertPos();

最好的建议,如果你想让你的网站动态。熟悉 AJAX。

于 2012-04-22T11:09:21.157 回答