original_string: protected function cell($cell, array $data = [], array $options = [])
      {
          $parts = explode('::', $cell);
  
          if (count($parts) === 2) {
              list($pluginAndCell, $action) = [$parts[0], $parts[1]];
          } else {
              list($pluginAndCell, $action) = [$parts[0], 'display'];
          }
  
          list($plugin) = pluginSplit($pluginAndCell);
          $className = App::className($pluginAndCell, 'View/Cell', 'Cell');
  
          if (!$className) {
              throw new MissingCellException(['className' => $pluginAndCell . 'Cell']);
          }
  
          if (!empty($data)) {
              $data = array_values($data);
          }
          $options = ['action' => $action, 'args' => $data] + $options;
          $cell = $this->_createCell($className, $action, $plugin, $options);
  
          return $cell;
      }
code: protected function cell($cell, array $data = [], array $options = [])
      {
          $parts = explode('::', $cell);
  
          if (count($parts) === 2) {
              list($pluginAndCell, $action) = [$parts[0], $parts[1]];
          } else {
              list($pluginAndCell, $action) = [$parts[0], 'display'];
          }
  
          list($plugin) = pluginSplit($pluginAndCell);
          $className = App::className($pluginAndCell, 'View/Cell', 'Cell');
  
          if (!$className) {
              throw new MissingCellException(['className' => $pluginAndCell . 'Cell']);
          }
  
          if (!empty($data)) {
              $data = array_values($data);
          }
          $options = ['action' => $action, 'args' => $data] + $options;
          $cell = $this->_createCell($className, $action, $plugin, $options);
  
          return $cell;
      }
code_tokens: protected function cell ( $ cell , array $ data = [ ] , array $ options = [ ] ) { $ parts = explode ( '::' , $ cell ) ; if ( count ( $ parts ) === 2 ) { list ( $ pluginAndCell , $ action ) = [ $ parts [ 0 ] , $ parts [ 1 ] ] ; } else { list ( $ pluginAndCell , $ action ) = [ $ parts [ 0 ] , 'display' ] ; } list ( $ plugin ) = pluginSplit ( $ pluginAndCell ) ; $ className = App :: className ( $ pluginAndCell , 'View/Cell' , 'Cell' ) ; if ( ! $ className ) { throw new MissingCellException ( [ 'className' => $ pluginAndCell . 'Cell' ] ) ; } if ( ! empty ( $ data ) ) { $ data = array_values ( $ data ) ; } $ options = [ 'action' => $ action , 'args' => $ data ] + $ options ; $ cell = $ this -> _createCell ( $ className , $ action , $ plugin , $ options ) ; return $ cell ; }
docstring: Renders the given cell.
  
  Example:
  
  ```
  // Taxonomy\View\Cell\TagCloudCell::smallList()
  $cell = $this->cell('Taxonomy.TagCloud::smallList', ['limit' => 10]);
  
  // App\View\Cell\TagCloudCell::smallList()
  $cell = $this->cell('TagCloud::smallList', ['limit' => 10]);
  ```
  
  The `display` action will be used by default when no action is provided:
  
  ```
  // Taxonomy\View\Cell\TagCloudCell::display()
  $cell = $this->cell('Taxonomy.TagCloud');
  ```
  
  Cells are not rendered until they are echoed.
  
  @param string $cell You must indicate cell name, and optionally a cell action. e.g.: `TagCloud::smallList`
  will invoke `View\Cell\TagCloudCell::smallList()`, `display` action will be invoked by default when none is provided.
  @param array $data Additional arguments for cell method. e.g.:
  `cell('TagCloud::smallList', ['a1' => 'v1', 'a2' => 'v2'])` maps to `View\Cell\TagCloud::smallList(v1, v2)`
  @param array $options Options for Cell's constructor
  @return \Cake\View\Cell The cell instance
  @throws \Cake\View\Exception\MissingCellException If Cell class was not found.
  @throws \BadMethodCallException If Cell class does not specified cell action.
docstring_tokens: Renders the given cell .