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 では、アーキテクチャを「破壊」して回避策を作成する方が簡単ですが、インターネット上では非常に困難です。インターネットは、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 に答える