本文整理汇总了PHP中Drupal\Core\Link::createFromRoute方法的典型用法代码示例。如果您正苦于以下问题:PHP Link::createFromRoute方法的具体用法?PHP Link::createFromRoute怎么用?PHP Link::createFromRoute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Drupal\Core\Link
的用法示例。
在下文中一共展示了Link::createFromRoute方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: form
/**
* {@inheritdoc}
*/
public function form(array $form, FormStateInterface $form_state)
{
$form = parent::form($form, $form_state);
/** @var \Drupal\commerce_tax\Entity\TaxTypeInterface $tax_type */
$tax_type = $this->entity;
/** @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface $zone_storage */
$zone_storage = $this->entityTypeManager->getStorage('zone');
$zones = $zone_storage->loadMultipleOverrideFree();
// @todo Filter by zone scope == 'tax'.
$zones = array_map(function ($zone) {
return $zone->label();
}, $zones);
$form['name'] = ['#type' => 'textfield', '#title' => $this->t('Name'), '#default_value' => $tax_type->getName(), '#maxlength' => 255, '#required' => TRUE];
$form['id'] = ['#type' => 'machine_name', '#title' => $this->t('Machine name'), '#default_value' => $tax_type->getId(), '#machine_name' => ['exists' => '\\Drupal\\commerce_tax\\Entity\\TaxType::load', 'source' => ['name']], '#required' => TRUE, '#disabled' => !$tax_type->isNew()];
$form['zone'] = ['#type' => 'select', '#title' => $this->t('Zone'), '#default_value' => $tax_type->getZoneId(), '#options' => $zones, '#required' => TRUE];
if ($tax_type->isNew()) {
$link = Link::createFromRoute('Zones page', 'entity.zone.collection')->toString();
$form['zone']['#description'] = $this->t('To add a new zone visit the @link.', ['@link' => $link]);
}
$form['compound'] = ['#type' => 'checkbox', '#title' => $this->t('Compound'), '#description' => $this->t("Compound tax is calculated on top of a primary tax. For example, Canada's Provincial Sales Tax (PST) is compound, calculated on a price that already includes the Goods and Services Tax (GST)."), '#default_value' => $tax_type->isCompound()];
$form['displayInclusive'] = ['#type' => 'checkbox', '#title' => $this->t('Display inclusive'), '#default_value' => $tax_type->isDisplayInclusive()];
$form['roundingMode'] = ['#type' => 'radios', '#title' => $this->t('Rounding mode'), '#default_value' => $tax_type->getRoundingMode() ?: TaxType::ROUND_HALF_UP, '#options' => [TaxType::ROUND_HALF_UP => $this->t('Round up'), TaxType::ROUND_HALF_DOWN => $this->t('Round down'), TaxType::ROUND_HALF_EVEN => $this->t('Round even'), TaxType::ROUND_HALF_ODD => $this->t('Round odd')], '#required' => TRUE];
$form['tag'] = ['#type' => 'textfield', '#title' => $this->t('Tag'), '#description' => $this->t('Used by the resolvers to analyze only the tax types relevant to them. For example, the EuTaxTypeResolver would analyze only the tax types with the "EU" tag.'), '#default_value' => $tax_type->getTag()];
return $form;
}
示例2: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$book_nids = array();
$links = array(Link::createFromRoute($this->t('Home'), '<front>'));
$book = $route_match->getParameter('node')->book;
$depth = 1;
// We skip the current node.
while (!empty($book['p' . ($depth + 1)])) {
$book_nids[] = $book['p' . $depth];
$depth++;
}
$parent_books = $this->nodeStorage->loadMultiple($book_nids);
if (count($parent_books) > 0) {
$depth = 1;
while (!empty($book['p' . ($depth + 1)])) {
if (!empty($parent_books[$book['p' . $depth]]) && ($parent_book = $parent_books[$book['p' . $depth]])) {
if ($parent_book->access('view', $this->account)) {
$links[] = Link::createFromRoute($parent_book->label(), 'entity.node.canonical', array('node' => $parent_book->id()));
}
}
$depth++;
}
}
return $links;
}
示例3: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$book_nids = array();
$breadcrumb = new Breadcrumb();
$links = array(Link::createFromRoute($this->t('Home'), '<front>'));
$book = $route_match->getParameter('node')->book;
$depth = 1;
// We skip the current node.
while (!empty($book['p' . ($depth + 1)])) {
$book_nids[] = $book['p' . $depth];
$depth++;
}
$parent_books = $this->nodeStorage->loadMultiple($book_nids);
if (count($parent_books) > 0) {
$depth = 1;
while (!empty($book['p' . ($depth + 1)])) {
if (!empty($parent_books[$book['p' . $depth]]) && ($parent_book = $parent_books[$book['p' . $depth]])) {
$access = $parent_book->access('view', $this->account, TRUE);
$breadcrumb->addCacheableDependency($access);
if ($access->isAllowed()) {
$breadcrumb->addCacheableDependency($parent_book);
$links[] = Link::createFromRoute($parent_book->label(), 'entity.node.canonical', array('node' => $parent_book->id()));
}
}
$depth++;
}
}
$breadcrumb->setLinks($links);
$breadcrumb->addCacheContexts(['route.book_navigation']);
return $breadcrumb;
}
示例4: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$breadcrumb = new Breadcrumb();
$breadcrumb->addLink(Link::createFromRoute($this->t('Home'), '<front>'));
$term = $route_match->getParameter('taxonomy_term');
// Breadcrumb needs to have terms cacheable metadata as a cacheable
// dependency even though it is not shown in the breadcrumb because e.g. its
// parent might have changed.
$breadcrumb->addCacheableDependency($term);
// @todo This overrides any other possible breadcrumb and is a pure
// hard-coded presumption. Make this behavior configurable per
// vocabulary or term.
$parents = $this->termStorage->loadAllParents($term->id());
// Remove current term being accessed.
array_shift($parents);
foreach (array_reverse($parents) as $term) {
$term = $this->entityManager->getTranslationFromContext($term);
$breadcrumb->addCacheableDependency($term);
$breadcrumb->addLink(Link::createFromRoute($term->getName(), 'entity.taxonomy_term.canonical', array('taxonomy_term' => $term->id())));
}
// This breadcrumb builder is based on a route parameter, and hence it
// depends on the 'route' cache context.
$breadcrumb->addCacheContexts(['route']);
return $breadcrumb;
}
示例5: testBuild
/**
* Tests ForumBreadcrumbBuilderBase::build().
*
* @see \Drupal\forum\Breadcrumb\ForumBreadcrumbBuilderBase::build()
*
* @covers ::build
*/
public function testBuild()
{
// Build all our dependencies, backwards.
$forum_manager = $this->getMockBuilder('Drupal\\forum\\ForumManagerInterface')->disableOriginalConstructor()->getMock();
$prophecy = $this->prophesize('Drupal\\taxonomy\\VocabularyInterface');
$prophecy->label()->willReturn('Fora_is_the_plural_of_forum');
$prophecy->id()->willReturn(5);
$prophecy->getCacheTags()->willReturn(['taxonomy_vocabulary:5']);
$prophecy->getCacheContexts()->willReturn([]);
$prophecy->getCacheMaxAge()->willReturn(Cache::PERMANENT);
$vocab_storage = $this->getMock('Drupal\\Core\\Entity\\EntityStorageInterface');
$vocab_storage->expects($this->any())->method('load')->will($this->returnValueMap(array(array('forums', $prophecy->reveal()))));
$entity_manager = $this->getMockBuilder('Drupal\\Core\\Entity\\EntityManagerInterface')->disableOriginalConstructor()->getMock();
$entity_manager->expects($this->any())->method('getStorage')->will($this->returnValueMap(array(array('taxonomy_vocabulary', $vocab_storage))));
$config_factory = $this->getConfigFactoryStub(array('forum.settings' => array('vocabulary' => 'forums')));
// Build a breadcrumb builder to test.
$breadcrumb_builder = $this->getMockForAbstractClass('Drupal\\forum\\Breadcrumb\\ForumBreadcrumbBuilderBase', array($entity_manager, $config_factory, $forum_manager));
// Add a translation manager for t().
$translation_manager = $this->getStringTranslationStub();
$breadcrumb_builder->setStringTranslation($translation_manager);
// Our empty data set.
$route_match = $this->getMock('Drupal\\Core\\Routing\\RouteMatchInterface');
// Expected result set.
$expected = array(Link::createFromRoute('Home', '<front>'), Link::createFromRoute('Fora_is_the_plural_of_forum', 'forum.index'));
// And finally, the test.
$breadcrumb = $breadcrumb_builder->build($route_match);
$this->assertEquals($expected, $breadcrumb->getLinks());
$this->assertEquals(['route'], $breadcrumb->getCacheContexts());
$this->assertEquals(['taxonomy_vocabulary:5'], $breadcrumb->getCacheTags());
$this->assertEquals(Cache::PERMANENT, $breadcrumb->getCacheMaxAge());
}
示例6: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
$vocabulary = $this->entityManager->getStorage('taxonomy_vocabulary')->load($this->config->get('vocabulary'));
$breadcrumb[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
return $breadcrumb;
}
示例7: build
/**
* {@inheritdoc}
*/
public function build()
{
$options = array('attributes' => array('title' => $this->link_label()));
return array('#type' => 'link', '#title' => $this->link_label(), '#url' => new Url('happy_alexandrie.query_welcome_controller', array(), $options), '#prefix' => '<p>', '#suffix' => '</p>');
// Other ways to do it. Directly using the link element.
return [Link::createFromRoute($this->configuration['link_title'], 'happy_alexandrie.query_welcome_controller')->toRenderable()];
}
示例8: orphans
/**
* Displays links to all products that have not been categorized.
*
* @return
* Renderable form array.
*/
public function orphans()
{
$build = array();
if ($this->config('taxonomy.settings')->get('maintain_index_table')) {
$vid = $this->config('uc_catalog.settings')->get('vocabulary');
$product_types = uc_product_types();
$field = FieldStorageConfig::loadByName('node', 'taxonomy_catalog');
//@todo - figure this out
// $field is a config object, not an array, so this doesn't work.
//$types = array_intersect($product_types, $field['bundles']['node']);
$types = $product_types;
//temporary to get this to work at all
$result = db_query('SELECT DISTINCT n.nid, n.title FROM {node_field_data} n LEFT JOIN (SELECT ti.nid, td.vid FROM {taxonomy_index} ti LEFT JOIN {taxonomy_term_data} td ON ti.tid = td.tid WHERE td.vid = :vid) txnome ON n.nid = txnome.nid WHERE n.type IN (:types[]) AND txnome.vid IS NULL', [':vid' => $vid, ':types[]' => $types]);
$rows = array();
while ($node = $result->fetchObject()) {
$rows[] = Link::createFromRoute($node->title, 'entity.node.edit_form', ['node' => $node->nid], ['query' => ['destination' => 'admin/store/products/orphans']])->toString();
}
if (count($rows) > 0) {
$build['orphans'] = array('#theme' => 'item_list', '#items' => $rows);
} else {
$build['orphans'] = array('#markup' => $this->t('All products are currently listed in the catalog.'), '#prefix' => '<p>', '#suffix' => '</p>');
}
} else {
$build['orphans'] = array('#markup' => $this->t('The node terms index is not being maintained, so Ubercart can not determine which products are not entered into the catalog.'), '#prefix' => '<p>', '#suffix' => '</p>');
}
return $build;
}
示例9: view
/**
* {@inheritdoc}
*/
public function view(OrderInterface $order, $view_mode)
{
$build = array('#type' => 'table', '#attributes' => array('class' => array('order-pane-table')), '#header' => array('qty' => array('data' => $this->t('Quantity'), 'class' => array('qty')), 'product' => array('data' => $this->t('Product'), 'class' => array('product')), 'model' => array('data' => $this->t('SKU'), 'class' => array('sku', RESPONSIVE_PRIORITY_LOW)), 'cost' => array('data' => $this->t('Cost'), 'class' => array('cost', RESPONSIVE_PRIORITY_LOW)), 'price' => array('data' => $this->t('Price'), 'class' => array('price')), 'total' => array('data' => $this->t('Total'), 'class' => array('price'))), '#empty' => $this->t('This order contains no products.'));
$account = \Drupal::currentUser();
if (!$account->hasPermission('administer products')) {
unset($build['#header']['cost']);
}
// @todo Replace with Views.
foreach ($order->products as $id => $product) {
$build[$id]['qty'] = array('#theme' => 'uc_qty', '#qty' => $product->qty->value, '#cell_attributes' => array('class' => array('qty')));
if ($product->nid->entity && $product->nid->entity->access('view')) {
$title = Link::createFromRoute($product->title->value, 'entity.node.canonical', ['node' => $product->nid->target_id])->toString();
} else {
$title = $product->title->value;
}
$build[$id]['product'] = array('#markup' => $title . uc_product_get_description($product), '#cell_attributes' => array('class' => array('product')));
$build[$id]['model'] = array('#markup' => $product->model->value, '#cell_attributes' => array('class' => array('sku')));
if ($account->hasPermission('administer products')) {
$build[$id]['cost'] = array('#theme' => 'uc_price', '#price' => $product->cost->value, '#cell_attributes' => array('class' => array('cost')));
}
$build[$id]['price'] = array('#theme' => 'uc_price', '#price' => $product->price->value, '#suffixes' => array(), '#cell_attributes' => array('class' => array('price')));
$build[$id]['total'] = array('#theme' => 'uc_price', '#price' => $product->price->value * $product->qty->value, '#suffixes' => array(), '#cell_attributes' => array('class' => array('total')));
// $build[$id][$field]['#wrapper_attributes']['class'] = $build['#header'][$field]['class'];
}
return $build;
}
示例10: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$breadcrumb = array();
$breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
$entity = $route_match->getParameter('entity');
$breadcrumb[] = new Link($entity->label(), $entity->urlInfo());
return $breadcrumb;
}
示例11: build
/**
* @inheritdoc
*/
public function build(RouteMatchInterface $route_match)
{
$breadcrumb = new Breadcrumb();
$geocoder = $route_match->getParameter('service');
$current_route = $route_match->getRouteName();
$links = [Link::createFromRoute($this->t('Home'), '<front>'), Link::createFromRoute($this->t('Administration'), 'system.admin'), Link::createFromRoute($this->t('Configuration'), 'system.admin_config'), Link::createFromRoute($this->t('Dmaps'), 'dmaps.settings'), Link::createFromRoute($this->t('Geocoding'), 'dmaps.locations.geocoding_options'), Link::createFromRoute($this->t('Geocoding %service', ['%service' => $geocoder]), $current_route, ['iso' => $route_match->getParameter('iso'), 'service' => $geocoder])];
$breadcrumb->setLinks($links);
return $breadcrumb;
}
示例12: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$config = \Drupal::config('uc_cart.settings');
$text = $config->get('breadcrumb_text');
$links[] = Link::createFromRoute($this->t('Home'), '<front>');
$links[] = new Link($text, Url::fromUri('internal:/' . $config->get('breadcrumb_url'), ['absolute' => TRUE]));
$breadcrumb = new Breadcrumb();
$breadcrumb->setLinks($links);
return $breadcrumb;
}
示例13: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$breadcrumb = new Breadcrumb();
$breadcrumb->addCacheContexts(['route']);
$links[] = Link::createFromRoute($this->t('Home'), '<front>');
$vocabulary = $this->entityManager->getStorage('taxonomy_vocabulary')->load($this->config->get('vocabulary'));
$breadcrumb->addCacheableDependency($vocabulary);
$links[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
return $breadcrumb->setLinks($links);
}
示例14: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$breadcrumb = new Breadcrumb();
$links[] = Link::createFromRoute(t('Home'), '<front>');
// Articles page is a view.
$links[] = Link::createFromRoute(t('Articles'), 'view.articles.page_1');
$links[] = Link::createFromRoute($this->node->label(), '<none>');
$breadcrumb->setLinks($links);
return $breadcrumb;
}
示例15: build
/**
* {@inheritdoc}
*/
public function build(RouteMatchInterface $route_match)
{
$links = array(Link::createFromRoute($this->t('Home'), '<front>'));
/** @var \Drupal\rng\GroupInterface $group */
$group = $route_match->getParameter('registration_group');
if ($event = $group->getEvent()) {
$links[] = new Link($event->label(), $event->urlInfo());
}
$breadcrumb = new Breadcrumb();
return $breadcrumb->setLinks($links)->addCacheContexts(['route.name']);
}