public CommentController::getReplyForm(Request $request, EntityInterface $entity, $field_name, $pid = NULL)
Form constructor for the comment reply form.
There are several cases that have to be handled, including:
- replies to comments
- replies to entities
Parameters
\Symfony\Component\HttpFoundation\Request $request: The current request object.
\Drupal\Core\Entity\EntityInterface $entity: The entity this comment belongs to.
string $field_name: The field_name to which the comment belongs.
int $pid: (optional) Some comments are replies to other comments. In those cases, $pid is the parent comment's comment ID. Defaults to NULL.
Return value
array|\Symfony\Component\HttpFoundation\RedirectResponse An associative array containing:
- An array for rendering the entity or parent comment.
- comment_entity: If the comment is a reply to the entity.
- comment_parent: If the comment is a reply to another comment.
- comment_form: The comment form as a renderable array.
Throws
\Symfony\Component\HttpKernel\Exception\NotFoundHttpException
File
- core/modules/comment/src/Controller/CommentController.php, line 212
Class
- CommentController
- Controller for the comment entity.
Namespace
Drupal\comment\Controller
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | public function getReplyForm(Request $request , EntityInterface $entity , $field_name , $pid = NULL) { $account = $this ->currentUser(); $build = array (); // The user is not just previewing a comment. if ( $request ->request->get( 'op' ) != $this ->t( 'Preview' )) { // $pid indicates that this is a reply to a comment. if ( $pid ) { // Load the parent comment. $comment = $this ->entityManager()->getStorage( 'comment' )->load( $pid ); // Display the parent comment. $build [ 'comment_parent' ] = $this ->entityManager()->getViewBuilder( 'comment' )->view( $comment ); } // The comment is in response to a entity. elseif ( $entity ->access( 'view' , $account )) { // We make sure the field value isn't set so we don't end up with a // redirect loop. $entity = clone $entity ; $entity ->{ $field_name }->status = CommentItemInterface::HIDDEN; // Render array of the entity full view mode. $build [ 'commented_entity' ] = $this ->entityManager()->getViewBuilder( $entity ->getEntityTypeId())->view( $entity , 'full' ); unset( $build [ 'commented_entity' ][ '#cache' ]); } } else { $build [ '#title' ] = $this ->t( 'Preview comment' ); } // Show the actual reply box. $comment = $this ->entityManager()->getStorage( 'comment' )->create( array ( 'entity_id' => $entity ->id(), 'pid' => $pid , 'entity_type' => $entity ->getEntityTypeId(), 'field_name' => $field_name , )); $build [ 'comment_form' ] = $this ->entityFormBuilder()->getForm( $comment ); return $build ; } |
Please login to continue.