• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

XF 2.0 how to add new class extensions to XFRM

HQCoder

Formerly dev.vnn
#1
I have dealt with this problem

i write this code:

PHP:
namespace HQCoder\ResourceVote\Pub\Controller;
class ResourceItem extends XFCP_ResourceItem
{
    public function actionIndex(XF\Mvc\ParameterBag $params)
    {
        $parent = parent::actionIndex($params);
        return $parent;
    }
   
}
and it show error
ErrorException: [E_STRICT] Declaration of HQCoder\ResourceVote\Pub\Controller\ResourceItem::actionIndex() should be compatible with XFRM\Pub\Controller\ResourceItem::actionIndex(XF\Mvc\ParameterBag $params) in src\addons\HQCoder\ResourceVote\Pub\Controller\ResourceItem.php at line 20
can you give me the way to add new class extensions to XFRM?
 
Last edited:

Snog

Well-known member
#2
Code:
namespace HQCoder\ResourceVote\Pub\Controller;

use XF\Mvc\ParameterBag;

class ResourceItem extends XFCP_ResourceItem
{
    public function actionIndex(ParameterBag $params)
    {
        $parent = parent::actionIndex($params);
        return $parent;
    }
}
Also for clarity that you're extending the XFRM, you should place the file in the XFRM\Pub\Controller folder in your add-on.
HQCoder\ResourceVote\XFRM\Pub\Controller
 

HQCoder

Formerly dev.vnn
#3
Code:
namespace HQCoder\ResourceVote\Pub\Controller;

use XF\Mvc\ParameterBag;

class ResourceItem extends XFCP_ResourceItem
{
    public function actionIndex(ParameterBag $params)
    {
        $parent = parent::actionIndex($params);
        return $parent;
    }
}
thanks mr snog.
By the way here I hope you help me this problem in xf2
how to use XF\Pub\View in XF2 addon? i use this code to return an json view :
Code:
return $this->view('HQCoder\ResourceVote:ResourceItem\Find', '', $viewParams);
But it does not seem right
 

Snog

Well-known member
#4
You need a template name in there, And use a short name for your add-on (though I don't think that you would cause a problem. I don't really know)..
Code:
return $this->view('ResourceVote:ResourceItem\Find', 'TEMPLATE_NAME', $viewParams);
 

HQCoder

Formerly dev.vnn
#5
You need a template name in there, And use a short name for your add-on (though I don't think that you would cause a problem. I don't really know)..
Code:
return $this->view('ResourceVote:ResourceItem\Find', 'TEMPLATE_NAME', $viewParams);
thanks you again, in XF/Pub/Controler/Member.php
Code:
public function actionFind()
    {
        $q = ltrim($this->filter('q', 'str', ['no-trim']));

        if ($q !== '' && utf8_strlen($q) >= 2)
        {
            /** @var \XF\Finder\User $userFinder */
            $userFinder = $this->finder('XF:User');

            $users = $userFinder
                ->where('username', 'like', $userFinder->escapeLike($q, '?%'))
                ->isValidUser(true)
                ->fetch(10);
        }
        else
        {
            $users = [];
            $q = '';
        }

        $viewParams = [
            'q' => $q,
            'users' => $users
        ];
        return $this->view('XF:Member\Find', '', $viewParams);
    }
you can see at line 1014
return $this->view('XF:Member\Find', '', $viewParams);
the return do not have a template name. because it return Json value
 

HQCoder

Formerly dev.vnn
#7
Json is handled differently. Look for $reply->setJsonParams in the XF code and how it's built/returned.
thanks you. I change it to
return $this->view('HQCoder\ResourceVote\Pub\View\ResourceItem\Find', 'TEMPLATE_NAME', $viewParams);
it worked
thanks again :p:p:p