我開始構建一個drupal 8自定義模塊,但無法運行它。它顯示Page Not Found Error。自定義模塊不工作drupal8
我模塊的名稱是my_form,這裏是 my_form.module文件
<?php
function my_form_menu()
{
$items = array();
$items['hello'] = array(
'title' => 'Hello World',
'description' => 'This is my First page.',
'route' => 'my_form.hello',
//'type' => MENU_LOCAL_TASK,
);
$items['form'] = array(
'title' => 'First form',
'description' => 'This is a example form.',
'route' => 'my_form.formpage',
//'type' => MENU_LOCAL_TASK,
);
return $items;
}
?>
這裏my_form.routing.yml文件
<?php
my_form.hello:
path: 'my_form/myformcontroller'
defaults:
_controller: '\Drupal\my_form\Controller\myformcontroller::hello'
_title: 'My first form in Drupal 8'
requirements:
_permission: 'access content'
my_form.formpage:
path: 'my_form/form'
defaults:
_form: '\Drupal\my_form\Form\form'
_title: 'Form page'
requirements:
_permission: 'access content'
?>
我覺得他主要衝突這個文件,請告訴路由路徑或命名是否有問題(我仍然不確定是否爲PATH字段提供了正確的路徑,同時定義了r歐特。) 這裏是myformcontroller.php的路徑是[模塊] \ SRC \控制器\
<?php
namespace Drupal\my_form\Controller;
class myformcontroller
{
public function hello()
{
$element['markUp'] = array(
#markup' => 'Hello world!',
);
return $element;
}
}
?>
這裏是form.php的位於[模塊] \ SRC \表格\形式。 PHP
<?php
namespace Drupal\my_form\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Component\Utility\UrlHelper;
class formpage extends FormBase {
public function getFormId() {
return 'my_form_formpage_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => 'name',
'#required' => TRUE,
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => 'email',
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state) {
$email = $form_state['values']['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
form_set_error('email', t('Invalid email format'));
}
}
public function submitForm(array &$form, FormStateInterface $form_state) {
foreach ($form_state->getValues() as $key => $value)
{
drupal_set_message($key . ': ' . $value);
}
}
}
?>
請幫助我。
而不是使用my_form.module來描述菜單,菜單項必須在module_name.links.menu.yml文件中定義[https://www.drupal.org/node/2122241](https://www。 drupal.org/node/2122241) – pavlovich