Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Tutorial 4: Control Search and Filter Form

Tutorial 4: Control Search and Filter Form

On the Post Home Screen, the search and filter form is added by default. Following steps to control the search form of each resource.
 

Step 1: Create PostSearchForm class to control search options

 
PostSearchForm.php
<?php
namespace Apps\Posts\Api\Form;
use Apps\Core_MobileApi\Api\Form\SearchForm;
class PostSearchForm extends SearchForm
{
public function getSortOptions()
{
$sortOptions = parent::getSortOptions();
$sortOptions[] = [
'value' => 'is_featured',
'label' => 'Is Featured'
];
return $sortOptions;
}
public function getWhenOptions()
{
return parent::getWhenOptions();
}
}
 

Step 2: Create Get Search From API

Improve PostApi class and add code
PostApi.php
<?php
namespace Apps\Posts\Api\Service;

use Apps\Core_MobileApi\Adapter\MobileApp\MobileApp;
use Apps\Core_MobileApi\Adapter\MobileApp\MobileAppSettingInterface;
use Apps\Core_MobileApi\Adapter\MobileApp\Screen;
use Apps\Core_MobileApi\Adapter\Utility\UrlUtility;
use Apps\Core_MobileApi\Api\AbstractResourceApi;
use Apps\Posts\Api\Form\PostForm;
use Apps\Posts\Api\Form\PostSearchForm;
use Apps\Posts\Api\Resource\PostResource;
class PostApi extends AbstractResourceApi implements MobileAppSettingInterface
{
public function __naming()
{
return [
'post/search-form' => [
'get' => 'getSearchForm'
]
];
}
public function getSearchForm()
{
$form = $this->createForm(PostSearchForm::class, [
'title' => 'search',
'method' => 'GET',
'action' => UrlUtility::makeApiUrl('post')
]);
return $this->success($form->getFormStructure());
}
/* other code... */
}
 
Explain the code above:

  • Method __naming() of PostApi class allows defining more API routes, Route to search form much follow standard "{resource_name}/search-form"
  • Method getSearchForm() handle API request and response the form's structure in JSON

 

Step 3: Configure Post Resource setting

Override method getMobileSettings in PostResource class allow us to configure for each resource. The code below configures to change the placeholder string, modify sort and filter options
PostResource.php
<?php
namespace Apps\Posts\Api\Resource;
use Apps\Core_MobileApi\Api\Resource\ResourceBase;
use Apps\Posts\Api\Form\PostSearchForm;
class PostResource extends ResourceBase
{
public $resource_name = "post";
public $module_name = "post";
public $title;
public $description;
public $text;
public function getMobileSettings($params = [])
{
$searchFilter = (new PostSearchForm());
$searchFilter->setLocal($this->getLocalization());
return self::createSettingForResource([
'resource_name' => $this->resource_name,
'search_input' => [
'placeholder' => 'Search Posts'
],
'sort_menu' => $searchFilter->getSortOptions(),
'filter_menu' => $searchFilter->getWhenOptions()
]);
}
}
 

Step 4: Test result render on Mobile App


 

Step 5: handle the search form submission

When a user uses the search or filter menu, The Mobile App will submit API request to Get All API with all form's parameters. All parameters auto-resolve and pass to the findAll() method as an array.
 
 

  • No labels