सिर्फ मेरा अंतिम कोड है कि संभालती उपयोगकर्ता किसी अन्य पृष्ठ से आता है से एक टुकड़ा साझा करना चाहते थे।
<?php
namespace Application\Controller\Plugin;
use Zend\Session;
trait RefererRedirect
{
/**
* @var Session\Container
*/
private $sessionContainer;
/**
* @param Session\Container $sessionContainer
*/
public function setSessionContainer(Session\Container $sessionContainer)
{
$this->sessionContainer = $sessionContainer;
}
protected function clearReferer()
{
$this->sessionContainer->offsetUnset('referer');
}
protected function registerReferer()
{
if (!$this->sessionContainer->offsetExists('referer')) {
$this->sessionContainer->offsetSet('referer', $this->getRequest()->getHeader('Referer')->uri()->getPath());
}
}
protected function redirectToRefererOrDefaultRoute($defaultRoute, $defaultParams = [])
{
if ($this->sessionContainer->offsetExists('referer')) {
$url = $this->sessionContainer->offsetGet('referer');
$this->clearReferer();
return $this->redirect()->toUrl($url);
}
return $this->redirect()->toRoute($defaultRoute, $defaultParams);
}
}
फिर एक अंतरफलक:
<?php
namespace Application;
use Zend\Session;
interface RefererAwareInterface
{
/**
* @param Session\Container $sessionContainer
*/
public function setSessionContainer(Session\Container $sessionContainer);
}
फिर SessionContainer सुई इंटरफ़ेस का उपयोग:
एक विशेषता पहले बनाएं
<?php
namespace Application;
class Module
{
public function getControllerConfig()
{
return [
'factories' => [
],
'initializers' => array(
function ($instance, $sm) {
if ($instance instanceof RefererAwareInterface) {
$instance->setSessionContainer(new Session\Container('Referer'));
}
}
)
];
}
}
फिर अपने नियंत्रक में
:
<?php
namespace Auth\Controller;
class UsersController extends AbstractActionController implements RefererAwareInterface
{
use RefererRedirect;
public function indexAction()
{
$this->clearReferer();
// do stuff
}
public function addAction()
{
$this->registerReferer();
// do stuff
return $this->redirectToRefererOrDefaultRoute('auth/users');
}
public function backAction()
{
return $this->redirectToRefererOrDefaultRoute('auth/users');
}
}
त्वरित उत्तर के लिए धन्यवाद @ सैम। यह वही है जो मैं देख रहा था :) – Sanju
क्षमा करें सैम लेकिन आपके लिंक तोड़ दिए गए हैं (वैसे भी +1) –
@ फिपालेन कॉन्स्टेंटिन मेरी शक्ति से बाहर अगर गिथब्स लिंक तोड़ते हैं। मैंने विशेष रूप से प्रतिबद्ध लिंक का उपयोग किया ताकि वे उपलब्ध हों: एस – Sam