でカスタム コンポーネントを作成しましたJoomla 2.5
。このコンポーネントでは、 で利用可能なすべてのユーザーを取得したいとcom_users
考えていcom_users
ます。誰でもそれを行う方法について提案があります。
2 に答える
モデルを使用したい場所に応じて、Joomla に問い合わせることができます。あなたのためにそれをロードします。
JController
クラスまたはサブクラスでは、モデル名とコンポーネントのプレフィックスを渡して呼び出すことができますgetModel
...
例えば
JModel::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_users/models/');
$model = $this->getModel($name = 'User', $prefix = 'UsersModel');
上記のように、ロードする外部モデルのパスを追加する必要がある場合がありますJModel::addIncludePath()
。
または、モデル名とクラス接頭辞がわかっている場合は、 を使用して目的のモデル オブジェクトを作成できJModel
ますgetInstance()
...
$model = JModel::getInstance('User', 'UsersModel');
または、ビューで次のことができます。
$myModel = $this->getModel('myOtherModel');
$this->setModel($myModel);
注: 最初の行では、目的のモデル名を渡しています。通常はgetModel
、パラメーターを指定せずに呼び出して、コンポーネント ビュー コントローラーの既定のモデルを読み込みます。2行目では、モデルを渡すだけsetModel()
なので、ビューが使用するデフォルトのモデルにはなりません。
後でモデル オブジェクトを使用する場合は、次のように使用するオブジェクトを指定できます。
$item = $this->get('Item');
$otherItem = $this->get('Item', 'myOtherModel' );
最初の行では、ビューのデフォルト モデルを使用します (オプションのパラメーターでモデルを指定したため)。2 行目はgetItem()
fromを使用しmyOtherModel
ます。
JView
(in libraries/joomla/application/view.php
) には次のメソッドがあるため、これですべて機能します。
/**
* Method to get the model object
*
* @param string $name The name of the model (optional)
*
* @return mixed JModel object
*
* @since 11.1
*/
public function getModel($name = null)
{
if ($name === null)
{
$name = $this->_defaultModel;
}
return $this->_models[strtolower($name)];
}
/**
* Method to add a model to the view. We support a multiple model single
* view system by which models are referenced by classname. A caveat to the
* classname referencing is that any classname prepended by JModel will be
* referenced by the name without JModel, eg. JModelCategory is just
* Category.
*
* @param JModel &$model The model to add to the view.
* @param boolean $default Is this the default model?
*
* @return object The added model.
*
* @since 11.1
*/
public function setModel(&$model, $default = false)
{
$name = strtolower($model->getName());
$this->_models[$name] = &$model;
if ($default)
{
$this->_defaultModel = $name;
}
return $model;
}
このようなことを試してください
if(!class_exists('UsersModelUser')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_users'.DS.'models'.DS.'user.php');
管理者側またはフロントエンドからモデルに正しいパスを追加できます。
VM2.x コンポーネントはこのように使用しています。
または、使用できるユーザーに関する詳細のみが必要です。
$user = JFactory::getUser();
これがあなたを助けることを願っています..