it-swarm.dev

カスタムフィルターのデフォルト値を設定する

Joomla 3.Xでカスタムコンポーネントを開発しています。リストビューがあり、リストの上部にカスタムフィルターがいくつか追加されています。問題は、フィルターを適用しないと結果が多すぎることです。ページが初めて読み込まれるときに、フィルターのデフォルト値をどのように設定できるのかと考えています。

モデルのコンストラクターまたはpopulatestateメソッドで試してみましたが、成功しませんでした。

$app = JFactory::getAplication();
 $from_date = $app ->getUserStateFromRequest();

 $date = date('Y-m-d H:i:s');

 if($from_date === null)
 {
  $from_date = $date;
 }

残念ながら、それは機能せず、設定方法を見つけることができませんでした。ありがとう!

3
Eva Farkasne

Com_bannersなどのコアコンポーネントのバックエンドにあるJModelList :: populateState()をご覧ください。

GetUserStateFromRequestメソッドを使用して、デフォルト値を設定できます。 3番目のパラメーター$defaultを参照してください。

/**
 * Gets the value of a user state variable and sets it in the session
 *
 * This is the same as the method in JApplication except that this also can optionally
 * force you back to the first page when a filter has changed
 *
 * @param   string   $key        The key of the user state variable.
 * @param   string   $request    The name of the variable passed in a request.
 * @param   string   $default    The default value for the variable if not found. Optional.
 * @param   string   $type       Filter for the variable, for valid values see {@link JFilterInput::clean()}. Optional.
 * @param   boolean  $resetPage  If true, the limitstart in request is set to zero
 *
 * @return  The request user state.
 *
 * @since   12.2
 */
public function getUserStateFromRequest($key, $request, $default = null, $type = 'none', $resetPage = true)

これは役に立ちますか?

2
Valentin Despa