Jump to content
rjgamer

Hook current page got created

Recommended Posts

Hi,

is there a hook after the current (active) page got created? Or which method got called in the Page class after the Constructor of the current page got initialized?

Thanks.

 

Share this post


Link to post
Share on other sites
3 hours ago, monollonom said:

Have you tried with Pages::added ?

Sorry, I'm mean after a page load when the current page get fetched from the database. Page::added get called when I create a new page.

I've a use case where I want a run a method of my custom page class. But if I run the method in the constructor, not all properties of page are loaded (e.g. httpUrl). 

Share this post


Link to post
Share on other sites

I think I found it: Page::loaded

https://processwire.com/api/ref/page/loaded/

Edit: How do I check in a custom page class, if it is the current class? Maybe something like this:

namespace ProcessWire;

class DefaultPage extends Page {

   public function loaded(): {
      parent::loaded();

      if ($this->isCurrent) {
         // to my special custom super feature stuff
      }
   }

}

 

Share this post


Link to post
Share on other sites

I've never worked with custom page classes but I assume you could add a hook on the "loaded" event of your custom page and execute your custom function, something like :

$wire->addHookAfter("CustomPage::loaded", function($event) {
	$page = $event->object;
	$page->yourCustomPageFunction();
});

 

Share this post


Link to post
Share on other sites
20 hours ago, rjgamer said:

namespace ProcessWire; class DefaultPage extends Page { public function loaded(): { parent::loaded(); if ($this->isCurrent) { // to my special custom super feature stuff } } }

Are you sure you need to check? If you place a custom "loaded" method in your custom page class only pages using your custom page class will execute that code anyway... Or am I missing anything?

But if I'm missing anything checking for the current pageclass is as easy as this:

if($page instanceof self) { ... }

 

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By VeiJari
      Hello forum, we're trying to use Processwire as our REST-API. We are having problems with our API login to Processwire from frontend. It gives us 403 error.
      We have installed ProcessWire to subdirectory (/api/*) and our frontend is static JS files at root ( / ). Apache access logs gives 404 to our POST-request, but browser devtools shows 403 for our POST /api/login request. 
      Processwire backend panel works. We also have a GET endpoint for the API that returns 200 with correct payload.  So we're wondering why does our GET works but POST doesn't?
      Does this have something to do with Processwire .htaccess, or is this because of our webhost? What should we check first? Any help would be appreciated.
    • By Kiwi Chris
      I need to restrict editing access based on both the user role, and the value of a sub-field in a page reference field.
      eg $page->competition->closingDate 
      There's some discussion about restricting editing access based on role, and that works, but when I try to access the page via the method @Robin S suggests, the page returned is an admin page rather than the page being edited, so I don't have access to the edited page's fields.
       
    • By killedfriendz
      I am very sorry for asking this but i totally do not understand how to set values of checbox using API. 
      I have checbox field on my page with name "order_status". 
      So i've tried few ways to make it checked but it still doesn't work:
       
      $userPage->order_status->value = 1; $userPage->order_status->add(1); $userPage->order_status->add(true); Could you please tell me how to do it?
    • By rjgamer
      Hi guys,
      the field "redirect_last" of type DateTime got not updated. The update on the field "redirect_counter" works and got saved.
      Does anybody know what I did wrong in my code?
      if ($input->urlSegment(1) === 'redirect') { $page->of(false); $page->redirect_last = time(); $page->redirect_counter += 1; if ($page->save('redirect_counter')) { $session->redirect($page->website_url, 302); } } Thanks.
×
×
  • Create New...