VirtualPage::getPage PHP Method

getPage() public method

Simply returns a page we can put stuff on. This page would be displayed instead of regular page, so beware.
public getPage ( ) : Page
return Page page to be displayed
    public function getPage()
    {
        if ($this->page) {
            return $this->page;
        }
        // Remove original page
        $this->app->page_object->destroy(false);
        $dest = $this->app->layout ?: $this->app;
        $this->page = $dest->add($this->page_class, $this->name, null, $this->page_template);
        /** @type Page $this->page */
        $this->app->page_object = $this->page;
        $this->app->stickyGET($this->name);
        return $this->page;
    }

Usage Example

Example #1
0
File: CRUD.php Project: atk4/atk4
 /**
  * Assuming that your model contains a certain method, this allows
  * you to create a frame which will pop you a new frame with
  * a form representing model method arguments. Once the form
  * is submitted, the action will be evaluated.
  *
  * @param string $method_name
  * @param array $options
  */
 public function addAction($method_name, $options = array())
 {
     if (!$this->model) {
         throw $this->exception('Must set CRUD model first');
     }
     if ($options == 'toolbar') {
         $options = array('column' => false);
     }
     if ($options == 'column') {
         $options = array('toolbar' => false);
     }
     $descr = $options['descr'] ?: ucwords(str_replace('_', ' ', $method_name));
     $icon = $options['icon'] ?: 'target';
     $show_toolbar = isset($options['toolbar']) ? $options['toolbar'] : true;
     $show_column = isset($options['column']) ? $options['column'] : true;
     if ($this->isEditing($method_name)) {
         /** @type View_Console $c */
         $c = $this->virtual_page->getPage()->add('View_Console');
         $self = $this;
         // Callback for the function
         $c->set(function ($c) use($show_toolbar, $show_column, $options, $self, $method_name) {
             if ($show_toolbar && !$self->id) {
                 $self->model->unload();
             } elseif ($show_column && $self->id) {
                 $c->out('Loading record ' . $self->id, array('class' => 'atk-effect-info'));
                 $self->model->load($self->id);
             } else {
                 return;
             }
             $ret = $self->model->{$method_name}();
             $c->out('Returned: ' . json_encode($ret, JSON_UNESCAPED_UNICODE), array('class' => 'atk-effect-success'));
             /*
             if (isset($options['args'])) {
                 $params = $options['args'];
             } elseif (!method_exists($self->model, $method_name)) {
                 // probably a dynamic method
                 $params = array();
             } else {
                 $reflection = new ReflectionMethod($self->model, $method_name);
             
                 $params = $reflection->getParameters();
             }
             */
         });
         return;
         /* unused code below
         
                     $has_parameters = (bool) $params;
                     foreach ($params as $i => $param) {
                         $this->form->addField($param->name);
                         $this->has_parameters = true;
                     }
         
                     if (!$has_parameters) {
                         $this->form->destroy();
                         $ret = $this->model->$method_name();
                         if (is_object($ret) && $ret == $this->model) {
                             $this->virtual_page->getPage()->add('P')->set('Executed successfully');
                             $this->virtual_page->getPage()->js(true, $this->js_reload);
                         } else {
                             $this->virtual_page->getPage()->js(true, $this->js_reload);
                             if (is_object($ret)) {
                                 $ret = (string) $ret;
                             }
                             $this->virtual_page->getPage()
                                 ->add('P')->set('Returned: '.json_encode($ret, JSON_UNESCAPED_UNICODE));
                         }
                         $this->virtual_page->getPage()
                             ->add('Button')->set(array('Close', 'icon' => 'cross', 'swatch' => 'green'))
                             ->js('click')->univ()->closeDialog();
         
                         return true;
                     }
         
                     $this->form->addSubmit('Execute');
                     if ($this->form->isSubmitted()) {
                         $ret = call_user_func_array(array($this->model, $method_name), array_values($this->form->get()));
                         if (is_object($ret)) {
                             $ret = (string) $ret;
                         }
                         $this->js(null, $this->js()->reload())->univ()
                             ->successMessage('Returned: '.json_encode($ret, JSON_UNESCAPED_UNICODE))
                             ->closeDialog()
                             ->execute();
                     }
         
                     return true;
                     */
     } elseif ($this->isEditing()) {
         return;
     }
     $frame_options = array_merge(array(), $this->frame_options ?: array());
     if ($show_column) {
         $this->virtual_page->addColumn($method_name, $descr . ' ' . $this->entity_name, array('descr' => $descr, 'icon' => $icon), $this->grid);
     }
     if ($show_toolbar) {
         $button = $this->addButton(array($descr, 'icon' => $icon));
         // Configure Add Button on Grid and JS
         $button->js('click')->univ()->frameURL($this->app->_($this->entity_name . '::' . $descr), $this->virtual_page->getURL($method_name), $frame_options);
     }
 }