CakePHP - 从视图中调用组件的函数,并在单击按钮时执行它

时间:2012-04-22 08:56:34

标签: javascript cakephp

如何从视图中调用组件中的函数? (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代码?

2 个答案:

答案 0 :(得分:0)

echo $form->create('Account', array('action' => 'insertPos'));
echo $form->button('Save Changes', array('type' => 'submit'));
echo $form->end();

答案 1 :(得分:0)

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

客户端&lt; ---- HTTPRequest ----&gt;服务器侧

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

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

最佳建议,如果您想让您的网站充满活力。熟悉AJAX。