Inpsyde\MultilingualPress\Common\Admin\SettingsPage::with_parent PHP Method

with_parent() public static method

Returns a new settings page object, instantiated according to the given arguments.
Since: 3.0.0
public static with_parent ( integer $admin, string $parent, string $title, string $menu_title, string $capability, string $slug, Inpsyde\MultilingualPress\Common\Admin\SettingsPageView $view ) : static
$admin integer Admin type. Use the class constants.
$parent string Parent page. Use the available class constants.
$title string Title on the page itself.
$menu_title string Title in the admin menu.
$capability string Capability required to view the settings page.
$slug string Page slug used in the URL.
$view Inpsyde\MultilingualPress\Common\Admin\SettingsPageView View object.
return static Settings page object.
    public static function with_parent($admin, $parent, $title, $menu_title, $capability, $slug, SettingsPageView $view)
    {
        $settings_page = new static($admin, $title, $menu_title, $capability, $slug, $view);
        $settings_page->parent = (string) $parent;
        return $settings_page;
    }

Usage Example

 /**
  * Registers the provided services on the given container.
  *
  * @since 3.0.0
  *
  * @param Container $container Container object.
  *
  * @return void
  */
 public function register(Container $container)
 {
     $container['multilingualpress.base_path_adapter'] = function () {
         return new CachingBasePathAdapter();
     };
     $container->share('multilingualpress.internal_locations', function () {
         return new InternalLocations();
     });
     // TODO: Make a regular not shared service as soon as everything else has been adapted. Or remove from here?
     $container->share('multilingualpress.module_manager', function () {
         // TODO: Maybe store the option name somewhere? But then again, who else really needs to know it?
         // TODO: Migration: The old option name was "state_modules", and it stored "on" and "off" values, no bools.
         return new Module\NetworkOptionModuleManager('multilingualpress_modules');
     });
     $container['multilingualpress.plugin_settings_page'] = function (Container $container) {
         return SettingsPage::with_parent(SettingsPage::ADMIN_NETWORK, SettingsPage::PARENT_NETWORK_SETTINGS, __('MultilingualPress', 'multilingual-press'), __('MultilingualPress', 'multilingual-press'), 'manage_network_options', 'multilingualpress', $container['multilingualpress.plugin_settings_page_view']);
     };
     $container['multilingualpress.plugin_settings_page_view'] = function (Container $container) {
         return new PluginSettingsPage\View($container['multilingualpress.module_manager'], $container['multilingualpress.update_plugin_settings_nonce'], $container['multilingualpress.asset_manager']);
     };
     $container['multilingualpress.plugin_settings_updater'] = function (Container $container) {
         return new PluginSettingsPage\PluginSettingsUpdater($container['multilingualpress.module_manager'], $container['multilingualpress.update_plugin_settings_nonce'], $container['multilingualpress.plugin_settings_page']);
     };
     $container['multilingualpress.post_request_data_manipulator'] = function () {
         return new FullRequestDataManipulator(RequestDataManipulator::METHOD_POST);
     };
     $container['multilingualpress.relationship_control_search'] = function () {
         return new RequestAwareSearch();
     };
     $container['multilingualpress.relationship_control_search_controller'] = function (Container $container) {
         return new SearchController($container['multilingualpress.relationship_control_search_results_view']);
     };
     $container['multilingualpress.relationship_control_search_results_view'] = function (Container $container) {
         return new StatusAwareSearchResultsView($container['multilingualpress.relationship_control_search']);
     };
     $container['multilingualpress.relationship_control_view'] = function (Container $container) {
         return new RelationshipControlView($container['multilingualpress.relationship_control_search_results_view'], $container['multilingualpress.asset_manager']);
     };
     $container['multilingualpress.relationship_controller'] = function (Container $container) {
         return new RelationshipController($container['multilingualpress.content_relations']);
     };
     $container->share('multilingualpress.request', function () {
         return new ConditionalAwareRequest();
     });
     $container['multilingualpress.update_plugin_settings_nonce'] = function () {
         return new WPNonce('update_plugin_settings');
     };
 }