1

でカスタム コンポーネントを作成しましたJoomla 2.5。このコンポーネントでは、 で利用可能なすべてのユーザーを取得したいとcom_users考えていcom_users ます。誰でもそれを行う方法について提案があります。

4

2 に答える 2

3

モデルを使用したい場所に応じて、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;
}
于 2013-01-07T12:13:11.757 に答える
1

このようなことを試してください

if(!class_exists('UsersModelUser')) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_users'.DS.'models'.DS.'user.php');

管理者側またはフロントエンドからモデルに正しいパスを追加できます。

VM2.x コンポーネントはこのように使用しています。

または、使用できるユーザーに関する詳細のみが必要です。

$user = JFactory::getUser();

これがあなたを助けることを願っています..

于 2013-01-07T10:56:15.307 に答える