2012-01-11 18 views
2

私はPHPでjoomla MVCコンポーネントを開発中です。 私は以下の機能が必要です1)& 2)私のコンポーネントコードのmodel.phpの中の1つ。URLにリダイレクトする方法と、呼び出し元関数に値を返す方法はありますか?

function xyz() 
{ 
//blah blah 
//1) I have to redirect 
$mainframe->redirect('index.php?option=com_abc',''); 
//2) and also return value to caller function 
return $row; 
} 

どうすればよいですか?

感謝:)

+1

どのような目的ですか?あなたがリダイレクトしたときに現在のリクエストを終了するので、なぜ値を返す必要がありますか? – Gordon

+0

それは私が必要とするものです。私はこの関数が値を返すようにしたいと同時に、urlにリダイレクトすることによって実行される他のタスクも呼び出したいと思っています。 –

+0

ユーザーはそのページにリダイレクトする必要がありますか、そのリクエストをトリガーしたいだけですか? – Gordon

答えて

2

は通常、MVCのアプローチでは、モデルがユーザーをリダイレクトするべきではありませんが、それはコントローラ上で行われます。コントローラでは、あなたが行うことができます:現在のコントローラのアクションが完了した後に

$this->setRedirect($url, $optional_message); 

// some more code to be executed 

をそのようにして、ユーザーがリダイレクトされず、正確にあなたがsetRedirect方法

を呼び出すときが、あなたは本当にする必要がある場合モデルでそれを行う、あなたはモデルの機能にあり、パラメータとしてコントローラを渡し、そこからリダイレクトを設定し、値を返すことができます。

<?php 
function xyz($controller) 
{ 

    $controller->setRedirect('index.php?option=com_abc',''); 

    return $row; 
} 
?> 

そして、あなたのコントローラで:

$model->xyz($this); 
+0

こんにちは@guilleva、私はあなたが提案した方法を試みたが、それは動作しませんでした。私はコントローラにリダイレクトしました。しかし、コントローラでは1つのリダイレクトだけが実行されます。 –