mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
670 lines
55 KiB
HTML
670 lines
55 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>View Cells — CodeIgniter 4.3.8 documentation</title>
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/css/citheme.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/css/citheme_dark.css" type="text/css" />
|
||
<link rel="shortcut icon" href="../_static/favicon.ico"/>
|
||
<!--[if lt IE 9]>
|
||
<script src="../_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/underscore.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/js/citheme.js"></script>
|
||
<script src="../_static/js/carbon.js"></script>
|
||
<script src="../_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="next" title="View Renderer" href="view_renderer.html" />
|
||
<link rel="prev" title="Views" href="views.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="../index.html">
|
||
|
||
<img src="../_static/ci-logo-text.svg" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/requirements.html">Server Requirements</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/credits.html">Credits</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../intro/psr.html">PSR Compliance</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../license.html">License Agreement</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_composer.html">Composer Installation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/installing_manual.html">Manual Installation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/running.html">Running Your App</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/troubleshooting.html">Troubleshooting</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../changelogs/index.html">Change Logs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/upgrading.html">Upgrading From a Previous Version</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/repositories.html">CodeIgniter Repositories</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../tutorial/index.html">Build Your First Application</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/static_pages.html">Static Pages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/news_section.html">News Section</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/create_news_items.html">Create News Items</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorial/conclusion.html">Conclusion</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">CodeIgniter4 Overview</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/structure.html">Application Structure</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/mvc.html">Models, Views, and Controllers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/autoloader.html">Autoloading Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/services.html">Services</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/factories.html">Factories</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/http.html">Working with HTTP Requests</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../concepts/security.html">Security Guidelines</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../general/index.html">General Topics</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/configuration.html">Configuration</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/urls.html">CodeIgniter URLs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/helpers.html">Helper Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/common_functions.html">Global Functions and Constants</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/logging.html">Logging Information</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/errors.html">Error Handling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/caching.html">Web Page Caching</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/ajax.html">AJAX Requests</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/modules.html">Code Modules</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/managing_apps.html">Managing your Applications</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../general/environments.html">Handling Multiple Environments</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../incoming/index.html">Controllers and Routing</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/routing.html">URI Routing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/controllers.html">Controllers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/filters.html">Controller Filters</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/message.html">HTTP Messages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/request.html">Request Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/incomingrequest.html">IncomingRequest Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/content_negotiation.html">Content Negotiation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/methodspoofing.html">HTTP Method Spoofing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../incoming/restful.html">RESTful Resource Handling</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul class="current">
|
||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Building Responses</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="views.html">Views</a></li>
|
||
<li class="toctree-l2 current"><a class="current reference internal" href="#">View Cells</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="view_renderer.html">View Renderer</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="view_layouts.html">View Layouts</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="view_parser.html">View Parser</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="view_decorators.html">View Decorators</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="table.html">HTML Table Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="response.html">HTTP Responses</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="api_responses.html">API Response Trait</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="localization.html">Localization</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="alternative_php.html">Alternate PHP Syntax for View Files</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Working with Databases</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/examples.html">Quick Start: Usage Examples</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/configuration.html">Database Configuration</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/connecting.html">Connecting to a Database</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/queries.html">Running Queries</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/results.html">Generating Query Results</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/helpers.html">Query Helper Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/query_builder.html">Query Builder Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/transactions.html">Transactions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/metadata.html">Getting MetaData</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/call_function.html">Custom Function Calls</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/events.html">Database Events</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../database/utilities.html">Database Utilities</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../models/index.html">Modeling Data</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../models/model.html">Using CodeIgniter's Model</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../models/entities.html">Using Entity Classes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../dbmgmt/index.html">Managing Databases</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/forge.html">Database Manipulation with Database Forge</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/migration.html">Database Migrations</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/seeds.html">Database Seeding</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../dbmgmt/db_commands.html">Database Commands</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../libraries/index.html">Library Reference</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/caching.html">Caching Driver</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/cookies.html">Cookies</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/curlrequest.html">CURLRequest Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/email.html">Email Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/encryption.html">Encryption Service</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/files.html">Working with Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/file_collections.html">File Collections</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/honeypot.html">Honeypot Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/images.html">Image Manipulation Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/pagination.html">Pagination</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/publisher.html">Publisher</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/security.html">Security</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/sessions.html">Session Library</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/throttler.html">Throttler</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/time.html">Times and Dates</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/typography.html">Typography</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/uploaded_files.html">Working with Uploaded Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/uri.html">Working with URIs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/user_agent.html">User Agent Class</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../libraries/validation.html">Validation</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../helpers/index.html">Helpers</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/array_helper.html">Array Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/cookie_helper.html">Cookie Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/date_helper.html">Date Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/filesystem_helper.html">Filesystem Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/form_helper.html">Form Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/html_helper.html">HTML Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/inflector_helper.html">Inflector Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/number_helper.html">Number Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/security_helper.html">Security Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/test_helper.html">Test Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/text_helper.html">Text Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/url_helper.html">URL Helper</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../helpers/xml_helper.html">XML Helper</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../testing/index.html">Testing</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/overview.html">Getting Started</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/database.html">Database</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/fabricator.html">Generating Data</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/controllers.html">Controller Testing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/feature.html">HTTP Testing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/response.html">Testing Responses</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/benchmark.html">Benchmarking</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/debugging.html">Debugging Your Application</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../testing/mocking.html">Mocking</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../cli/index.html">Command Line Usage</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_overview.html">CLI Overview</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_controllers.html">Running Controllers via CLI</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/spark_commands.html">Spark Commands</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_commands.html">Creating Spark Commands</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_generators.html">CLI Generators</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_library.html">CLI Library</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../cli/cli_request.html">CLIRequest Class</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../extending/index.html">Extending CodeIgniter</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/core_classes.html">Creating Core System Classes</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/common.html">Replacing Common Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/events.html">Events</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/basecontroller.html">Extending the Controller</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/authentication.html">Authentication</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/composer_packages.html">Creating Composer Packages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../extending/contributing.html">Contributing to CodeIgniter</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../libraries/official_packages.html">Official Packages</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../index.html">CodeIgniter</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<a class="btn btn-neutral float-right" href="https://github.com/codeigniter4/CodeIgniter4/edit/develop/user_guide_src/source/outgoing/view_cells.rst">Edit this page</a>
|
||
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item"><a href="index.html">Building Responses</a></li>
|
||
<li class="breadcrumb-item active">View Cells</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="view-cells">
|
||
<h1>View Cells<a class="headerlink" href="#view-cells" title="Permalink to this headline"></a></h1>
|
||
<p>Many applications have small view fragments that can be repeated from page to page, or in different places on the pages. These are often help boxes, navigation controls, ads, login forms, etc. CodeIgniter lets you encapsulate the logic for these presentation blocks within View Cells. They are basically mini-views that can be included in other views. They can have logic built in to handle any cell-specific display logic. They can be used to make your views more readable and maintainable by separating the logic for each cell into its own class.</p>
|
||
<p>CodeIgniter supports two types of View Cells: simple and controlled. Simple View Cells can be generated from any class and method of your choice and does not have to follow any rules, except that it must return a string. Controlled View Cells must be generated from a class that extends <code class="docutils literal notranslate"><span class="pre">Codeigniter\View\Cells\Cell</span></code> class which provides additional capability making your View Cells more flexible and faster to use.</p>
|
||
<div class="contents local topic" id="contents">
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="#calling-a-view-cell" id="id3">Calling a View Cell</a></p>
|
||
<ul>
|
||
<li><p><a class="reference internal" href="#namespace-omission" id="id4">Namespace Omission</a></p></li>
|
||
<li><p><a class="reference internal" href="#passing-parameters-as-key-value-string" id="id5">Passing Parameters as Key/Value String</a></p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p><a class="reference internal" href="#simple-cells" id="id6">Simple Cells</a></p></li>
|
||
<li><p><a class="reference internal" href="#controlled-cells" id="id7">Controlled Cells</a></p>
|
||
<ul>
|
||
<li><p><a class="reference internal" href="#creating-a-controlled-cell" id="id8">Creating a Controlled Cell</a></p></li>
|
||
<li><p><a class="reference internal" href="#generating-cell-via-command" id="id9">Generating Cell via Command</a></p></li>
|
||
<li><p><a class="reference internal" href="#using-a-different-view" id="id10">Using a Different View</a></p></li>
|
||
<li><p><a class="reference internal" href="#customize-the-rendering" id="id11">Customize the Rendering</a></p></li>
|
||
<li><p><a class="reference internal" href="#computed-properties" id="id12">Computed Properties</a></p></li>
|
||
<li><p><a class="reference internal" href="#presentation-methods" id="id13">Presentation Methods</a></p></li>
|
||
<li><p><a class="reference internal" href="#performing-setup-logic" id="id14">Performing Setup Logic</a></p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p><a class="reference internal" href="#cell-caching" id="id15">Cell Caching</a></p></li>
|
||
</ul>
|
||
</div>
|
||
<section id="calling-a-view-cell">
|
||
<span id="app-cells"></span><h2><a class="toc-backref" href="#id3">Calling a View Cell</a><a class="headerlink" href="#calling-a-view-cell" title="Permalink to this headline"></a></h2>
|
||
<p>No matter which type of View Cell you are using, you can call it from any view by using the <code class="docutils literal notranslate"><span class="pre">view_cell()</span></code> helper function.</p>
|
||
<p>The first parameter is the name of the class and method to call, and the second parameter is an array of parameters to pass to the method:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In a View.</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'App\Cells\MyClass::myMethod'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'param1'</span> <span class="o">=></span> <span class="s1">'value1'</span><span class="p">,</span> <span class="s1">'param2'</span> <span class="o">=></span> <span class="s1">'value2'</span><span class="p">])</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>The Cell method must return a string, which will be inserted into the view where the <code class="docutils literal notranslate"><span class="pre">view_cell()</span></code> function was called.</p>
|
||
<section id="namespace-omission">
|
||
<h3><a class="toc-backref" href="#id4">Namespace Omission</a><a class="headerlink" href="#namespace-omission" title="Permalink to this headline"></a></h3>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 4.3.0.</span></p>
|
||
</div>
|
||
<p>If you do not include the full namespace for the class, it will assume in can be found in the <code class="docutils literal notranslate"><span class="pre">App\Cells</span></code> namespace. So, the following example would attempt to find the <code class="docutils literal notranslate"><span class="pre">MyClass</span></code> class in <strong>app/Cells/MyClass.php</strong>. If it is not found there, all namespaces will be scanned until it is found, searching within a <strong>Cells</strong> subdirectory of each namespace:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In a View.</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'MyClass::myMethod'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'param1'</span> <span class="o">=></span> <span class="s1">'value1'</span><span class="p">,</span> <span class="s1">'param2'</span> <span class="o">=></span> <span class="s1">'value2'</span><span class="p">])</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="passing-parameters-as-key-value-string">
|
||
<h3><a class="toc-backref" href="#id5">Passing Parameters as Key/Value String</a><a class="headerlink" href="#passing-parameters-as-key-value-string" title="Permalink to this headline"></a></h3>
|
||
<p>You can also pass the parameters along as a key/value string:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In a View.</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'MyClass::myMethod'</span><span class="p">,</span> <span class="s1">'param1=value1, param2=value2'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
<section id="simple-cells">
|
||
<h2><a class="toc-backref" href="#id6">Simple Cells</a><a class="headerlink" href="#simple-cells" title="Permalink to this headline"></a></h2>
|
||
<p>Simple Cells are classes that return a string from the chosen method. An example of a simple Alert Message cell might look like this:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">AlertMessage</span>
|
||
<span class="p">{</span>
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">show</span><span class="p">(</span><span class="k">array</span> <span class="nv">$params</span><span class="p">)</span><span class="o">:</span> <span class="nx">string</span>
|
||
<span class="p">{</span>
|
||
<span class="k">return</span> <span class="s2">"<div class=</span><span class="se">\"</span><span class="s2">alert alert-</span><span class="si">{</span><span class="nv">$params</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="se">\"</span><span class="s2">></span><span class="si">{</span><span class="nv">$params</span><span class="p">[</span><span class="s1">'message'</span><span class="p">]</span><span class="si">}</span><span class="s2"></div>"</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You would call it from within a view like:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In a View.</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'AlertMessage::show'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'type'</span> <span class="o">=></span> <span class="s1">'success'</span><span class="p">,</span> <span class="s1">'message'</span> <span class="o">=></span> <span class="s1">'The user has been updated.'</span><span class="p">])</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Additionally, you can use parameter names that match the parameter variables in the method for better readability.
|
||
When you use it this way, all of the parameters must always be specified in the view cell call:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In a View.</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'Blog::recentPosts'</span><span class="p">,</span> <span class="s1">'category=codeigniter, limit=5'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="c1">// In a Cell.</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">Blog</span>
|
||
<span class="p">{</span>
|
||
<span class="c1">// ...</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">recentPosts</span><span class="p">(</span><span class="nx">string</span> <span class="nv">$category</span><span class="p">,</span> <span class="nx">int</span> <span class="nv">$limit</span><span class="p">)</span><span class="o">:</span> <span class="nx">string</span>
|
||
<span class="p">{</span>
|
||
<span class="nv">$posts</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-></span><span class="na">blogModel</span><span class="o">-></span><span class="na">where</span><span class="p">(</span><span class="s1">'category'</span><span class="p">,</span> <span class="nv">$category</span><span class="p">)</span>
|
||
<span class="o">-></span><span class="na">orderBy</span><span class="p">(</span><span class="s1">'published_on'</span><span class="p">,</span> <span class="s1">'desc'</span><span class="p">)</span>
|
||
<span class="o">-></span><span class="na">limit</span><span class="p">(</span><span class="nv">$limit</span><span class="p">)</span>
|
||
<span class="o">-></span><span class="na">get</span><span class="p">();</span>
|
||
|
||
<span class="k">return</span> <span class="nx">view</span><span class="p">(</span><span class="s1">'recentPosts'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'posts'</span> <span class="o">=></span> <span class="nv">$posts</span><span class="p">]);</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="controlled-cells">
|
||
<span id="id1"></span><h2><a class="toc-backref" href="#id7">Controlled Cells</a><a class="headerlink" href="#controlled-cells" title="Permalink to this headline"></a></h2>
|
||
<div class="versionadded">
|
||
<p><span class="versionmodified added">New in version 4.3.0.</span></p>
|
||
</div>
|
||
<p>Controlled cells have two primary goals: to make it as fast as possible to build the cell, and provide additional logic and
|
||
flexibility to your views, if they need it. The class must extend <code class="docutils literal notranslate"><span class="pre">CodeIgniter\View\Cells\Cell</span></code>. They should have a view file
|
||
in the same folder. By convention, the class name should be in PascalCase suffixed with <code class="docutils literal notranslate"><span class="pre">Cell</span></code> and the view should be
|
||
the snake_cased version of the class name, without the suffix. For example, if you have a <code class="docutils literal notranslate"><span class="pre">MyCell</span></code> class, the view file
|
||
should be <code class="docutils literal notranslate"><span class="pre">my.php</span></code>.</p>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Prior to v4.3.5, the generated view file ends with <code class="docutils literal notranslate"><span class="pre">_cell.php</span></code>. Though v4.3.5 and newer will generate view files
|
||
without the <code class="docutils literal notranslate"><span class="pre">_cell</span></code> suffix, existing view files will still be located and loaded.</p>
|
||
</div>
|
||
<section id="creating-a-controlled-cell">
|
||
<h3><a class="toc-backref" href="#id8">Creating a Controlled Cell</a><a class="headerlink" href="#creating-a-controlled-cell" title="Permalink to this headline"></a></h3>
|
||
<p>At the most basic level, all you need to implement within the class are public properties. These properties will be made available to the view file automatically. Implementing the AlertMessage from above as a Controlled Cell would look like this:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="c1">// app/Cells/AlertMessageCell.php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">AlertMessageCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">public</span> <span class="nv">$type</span><span class="p">;</span>
|
||
<span class="k">public</span> <span class="nv">$message</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// app/Cells/alert_message.php</span>
|
||
<span class="o"><</span><span class="nx">div</span> <span class="nx">class</span><span class="o">=</span><span class="s2">"alert alert-<?= esc(</span><span class="si">$type</span><span class="s2">, 'attr') ?>"</span><span class="o">></span>
|
||
<span class="o"><?=</span> <span class="nx">esc</span><span class="p">(</span><span class="nv">$message</span><span class="p">)</span> <span class="cp">?></span>
|
||
<span class="p"></</span><span class="nt">div</span><span class="p">></span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// Called in main View:</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'AlertMessageCell'</span><span class="p">,</span> <span class="s1">'type=warning, message=Failed.'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="generating-cell-via-command">
|
||
<span id="id2"></span><h3><a class="toc-backref" href="#id9">Generating Cell via Command</a><a class="headerlink" href="#generating-cell-via-command" title="Permalink to this headline"></a></h3>
|
||
<p>You can also create a controlled cell via a built in command from the CLI. The command is <code class="docutils literal notranslate"><span class="pre">php</span> <span class="pre">spark</span> <span class="pre">make:cell</span></code>. It takes one argument, the name of the cell to create. The name should be in PascalCase, and the class will be created in the <strong>app/Cells</strong> directory. The view file will also be created in the <strong>app/Cells</strong> directory.</p>
|
||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">php spark make:cell AlertMessageCell</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="using-a-different-view">
|
||
<h3><a class="toc-backref" href="#id10">Using a Different View</a><a class="headerlink" href="#using-a-different-view" title="Permalink to this headline"></a></h3>
|
||
<p>You can specify a custom view name by setting the <code class="docutils literal notranslate"><span class="pre">view</span></code> property in the class. The view will be located like any view would be normally:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">AlertMessageCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">public</span> <span class="nv">$type</span><span class="p">;</span>
|
||
<span class="k">public</span> <span class="nv">$message</span><span class="p">;</span>
|
||
|
||
<span class="k">protected</span> <span class="nx">string</span> <span class="nv">$view</span> <span class="o">=</span> <span class="s1">'my/custom/view'</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="customize-the-rendering">
|
||
<h3><a class="toc-backref" href="#id11">Customize the Rendering</a><a class="headerlink" href="#customize-the-rendering" title="Permalink to this headline"></a></h3>
|
||
<p>If you need more control over the rendering of the HTML, you can implement a <code class="docutils literal notranslate"><span class="pre">render()</span></code> method. This method allows you to perform additional logic and pass extra data the view, if needed. The <code class="docutils literal notranslate"><span class="pre">render()</span></code> method must return a string. To take advantage of the full features of controlled Cells, you should use <code class="docutils literal notranslate"><span class="pre">$this->view()</span></code> instead of the normal <code class="docutils literal notranslate"><span class="pre">view()</span></code> helper function:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">AlertMessageCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">public</span> <span class="nv">$type</span><span class="p">;</span>
|
||
<span class="k">public</span> <span class="nv">$message</span><span class="p">;</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">render</span><span class="p">()</span><span class="o">:</span> <span class="nx">string</span>
|
||
<span class="p">{</span>
|
||
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="na">view</span><span class="p">(</span><span class="s1">'my/custom/view'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'extra'</span> <span class="o">=></span> <span class="s1">'data'</span><span class="p">]);</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="computed-properties">
|
||
<h3><a class="toc-backref" href="#id12">Computed Properties</a><a class="headerlink" href="#computed-properties" title="Permalink to this headline"></a></h3>
|
||
<p>If you need to perform additional logic for one or more properties you can use computed properties. These require setting the property to either <code class="docutils literal notranslate"><span class="pre">protected</span></code> or <code class="docutils literal notranslate"><span class="pre">private</span></code> and implementing a public method whose name consists of the property name surrounded by <code class="docutils literal notranslate"><span class="pre">get</span></code> and <code class="docutils literal notranslate"><span class="pre">Property</span></code>:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// In a View. Initialize the protected properties.</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'AlertMessageCell'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'type'</span> <span class="o">=></span> <span class="s1">'note'</span><span class="p">,</span> <span class="s1">'message'</span> <span class="o">=></span> <span class="s1">'test'</span><span class="p">])</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="c1">// app/Cells/AlertMessageCell.php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">AlertMessageCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">protected</span> <span class="nv">$type</span><span class="p">;</span>
|
||
<span class="k">protected</span> <span class="nv">$message</span><span class="p">;</span>
|
||
<span class="k">private</span> <span class="nv">$computed</span><span class="p">;</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">mount</span><span class="p">()</span>
|
||
<span class="p">{</span>
|
||
<span class="nv">$this</span><span class="o">-></span><span class="na">computed</span> <span class="o">=</span> <span class="nb">sprintf</span><span class="p">(</span><span class="s1">'%s - %s'</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-></span><span class="na">type</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-></span><span class="na">message</span><span class="p">);</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">getComputedProperty</span><span class="p">()</span><span class="o">:</span> <span class="nx">string</span>
|
||
<span class="p">{</span>
|
||
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="na">computed</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">getTypeProperty</span><span class="p">()</span><span class="o">:</span> <span class="nx">string</span>
|
||
<span class="p">{</span>
|
||
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="na">type</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">getMessageProperty</span><span class="p">()</span><span class="o">:</span> <span class="nx">string</span>
|
||
<span class="p">{</span>
|
||
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="na">message</span><span class="p">;</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// app/Cells/alert_message.php</span>
|
||
<span class="o"><</span><span class="nx">div</span><span class="o">></span>
|
||
<span class="o"><</span><span class="nx">p</span><span class="o">></span><span class="nx">type</span> <span class="o">-</span> <span class="o"><?=</span> <span class="nx">esc</span><span class="p">(</span><span class="nv">$type</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">p</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">p</span><span class="p">></span>message - <span class="cp"><?</span><span class="o">=</span> <span class="nx">esc</span><span class="p">(</span><span class="nv">$message</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">p</span><span class="p">></span>
|
||
<span class="p"><</span><span class="nt">p</span><span class="p">></span>computed: <span class="cp"><?</span><span class="o">=</span> <span class="nx">esc</span><span class="p">(</span><span class="nv">$computed</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">p</span><span class="p">></span>
|
||
<span class="p"></</span><span class="nt">div</span><span class="p">></span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="admonition important">
|
||
<p class="admonition-title">Important</p>
|
||
<p>You can’t set properties that are declared as private during cell
|
||
initialization.</p>
|
||
</div>
|
||
</section>
|
||
<section id="presentation-methods">
|
||
<h3><a class="toc-backref" href="#id13">Presentation Methods</a><a class="headerlink" href="#presentation-methods" title="Permalink to this headline"></a></h3>
|
||
<p>Sometimes you need to perform additional logic for the view, but you don’t want to pass it as a parameter. You can implement a method that will be called from within the cell’s view itself. This can help the readability of your views:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="c1">// app/Cells/RecentPostsCell.php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">RecentPostsCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">protected</span> <span class="nv">$posts</span><span class="p">;</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">linkPost</span><span class="p">(</span><span class="nv">$post</span><span class="p">)</span>
|
||
<span class="p">{</span>
|
||
<span class="k">return</span> <span class="nx">anchor</span><span class="p">(</span><span class="s1">'posts/'</span> <span class="o">.</span> <span class="nv">$post</span><span class="o">-></span><span class="na">id</span><span class="p">,</span> <span class="nv">$post</span><span class="o">-></span><span class="na">title</span><span class="p">);</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// app/Cells/recent_posts.php</span>
|
||
<span class="o"><</span><span class="nx">ul</span><span class="o">></span>
|
||
<span class="o"><?</span><span class="nx">php</span> <span class="k">foreach</span> <span class="p">(</span><span class="nv">$posts</span> <span class="k">as</span> <span class="nv">$post</span><span class="p">)</span><span class="o">:</span> <span class="cp">?></span>
|
||
<span class="p"><</span><span class="nt">li</span><span class="p">></span><span class="cp"><?</span><span class="o">=</span> <span class="nv">$this</span><span class="o">-></span><span class="na">linkPost</span><span class="p">(</span><span class="nv">$post</span><span class="p">)</span> <span class="cp">?></span><span class="p"></</span><span class="nt">li</span><span class="p">></span>
|
||
<span class="cp"><?php</span> <span class="k">endforeach</span> <span class="cp">?></span>
|
||
<span class="p"></</span><span class="nt">ul</span><span class="p">></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="performing-setup-logic">
|
||
<h3><a class="toc-backref" href="#id14">Performing Setup Logic</a><a class="headerlink" href="#performing-setup-logic" title="Permalink to this headline"></a></h3>
|
||
<p>If you need to perform additional logic before the view is rendered, you can implement a <code class="docutils literal notranslate"><span class="pre">mount()</span></code> method. This method will be called just after the class is instantiated, and can be used to set additional properties or perform other logic:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">RecentPostsCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">protected</span> <span class="nv">$posts</span><span class="p">;</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">mount</span><span class="p">()</span>
|
||
<span class="p">{</span>
|
||
<span class="nv">$this</span><span class="o">-></span><span class="na">posts</span> <span class="o">=</span> <span class="nx">model</span><span class="p">(</span><span class="s1">'PostModel'</span><span class="p">)</span><span class="o">-></span><span class="na">orderBy</span><span class="p">(</span><span class="s1">'created_at'</span><span class="p">,</span> <span class="s1">'DESC'</span><span class="p">)</span><span class="o">-></span><span class="na">findAll</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You can pass additional parameters to the <code class="docutils literal notranslate"><span class="pre">mount()</span></code> method by passing them as an array to the <code class="docutils literal notranslate"><span class="pre">view_cell()</span></code> helper function. Any of the parameters sent that match a parameter name of the <code class="docutils literal notranslate"><span class="pre">mount()</span></code> method will be passed in:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span>
|
||
|
||
<span class="c1">// app/Cells/RecentPostsCell.php</span>
|
||
|
||
<span class="k">namespace</span> <span class="nx">App\Cells</span><span class="p">;</span>
|
||
|
||
<span class="k">use</span> <span class="nx">CodeIgniter\View\Cells\Cell</span><span class="p">;</span>
|
||
|
||
<span class="k">class</span> <span class="nc">RecentPostsCell</span> <span class="k">extends</span> <span class="nx">Cell</span>
|
||
<span class="p">{</span>
|
||
<span class="k">protected</span> <span class="nv">$posts</span><span class="p">;</span>
|
||
|
||
<span class="k">public</span> <span class="k">function</span> <span class="nf">mount</span><span class="p">(</span><span class="o">?</span><span class="nx">int</span> <span class="nv">$categoryId</span><span class="p">)</span>
|
||
<span class="p">{</span>
|
||
<span class="nv">$this</span><span class="o">-></span><span class="na">posts</span> <span class="o">=</span> <span class="nx">model</span><span class="p">(</span><span class="s1">'PostModel'</span><span class="p">)</span>
|
||
<span class="o">-></span><span class="na">when</span><span class="p">(</span>
|
||
<span class="nv">$categoryId</span><span class="p">,</span>
|
||
<span class="k">static</span> <span class="nx">fn</span> <span class="p">(</span><span class="nv">$query</span><span class="p">,</span> <span class="nv">$categoryId</span><span class="p">)</span> <span class="o">=></span> <span class="nv">$query</span><span class="o">-></span><span class="na">where</span><span class="p">(</span><span class="s1">'category_id'</span><span class="p">,</span> <span class="nv">$categoryId</span><span class="p">)</span>
|
||
<span class="p">)</span>
|
||
<span class="o">-></span><span class="na">orderBy</span><span class="p">(</span><span class="s1">'created_at'</span><span class="p">,</span> <span class="s1">'DESC'</span><span class="p">)</span>
|
||
<span class="o">-></span><span class="na">findAll</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// Called in main View:</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'RecentPostsCell'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'categoryId'</span> <span class="o">=></span> <span class="mi">5</span><span class="p">])</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
<section id="cell-caching">
|
||
<h2><a class="toc-backref" href="#id15">Cell Caching</a><a class="headerlink" href="#cell-caching" title="Permalink to this headline"></a></h2>
|
||
<p>You can cache the results of the view cell call by passing the number of seconds to cache the data for as the
|
||
third parameter. This will use the currently configured cache engine:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// Cache the view for 5 minutes</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'App\Cells\Blog::recentPosts'</span><span class="p">,</span> <span class="s1">'limit=5'</span><span class="p">,</span> <span class="mi">300</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
<p>You can provide a custom name to use instead of the auto-generated one if you like, by passing the new name
|
||
as the fourth parameter:</p>
|
||
<div class="highlight-html+php notranslate"><div class="highlight"><pre><span></span><span class="c1">// Cache the view for 5 minutes</span>
|
||
<span class="o"><?=</span> <span class="nx">view_cell</span><span class="p">(</span><span class="s1">'App\Cells\Blog::recentPosts'</span><span class="p">,</span> <span class="s1">'limit=5'</span><span class="p">,</span> <span class="mi">300</span><span class="p">,</span> <span class="s1">'newcacheid'</span><span class="p">)</span> <span class="cp">?></span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="views.html" class="btn btn-neutral float-left" title="Views" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="view_renderer.html" class="btn btn-neutral float-right" title="View Renderer" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2019-2023 CodeIgniter Foundation.
|
||
<span class="lastupdated">Last updated on Aug 25, 2023.
|
||
</span></p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(false);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |