недопустимый флаг регулярного выражения n - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь получить параметры из url в kohana 3, используя следующий код, но пожарная ошибка выдает мне сообщение об ошибке "недопустимый флаг регулярного выражения n", код:

CONTROLLER

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Test extends Controller_Template
{
public function action_index()
{
    $this->template = View::factory('par');
    $this->template->content = View::factory('par');
}
public function get()
{
    $param1 = $this->request->param('param1');
    $param2 = $this->request->param('param2');
    $param3 = $this->request->param('param3');

    echo "This is param1: ".$param1; 
    echo "This is param2: ".$param2; 
    echo "This is param3: ".$param3;
}
}

ПРОСМОТР

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org   /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>


<?php $x=1;
  $y=2;
  $z=3;
?>

<input type="button" value = "button" onClick=<?php echo url::site('test/get'.$x);?> />
</body>
</html>

РЕГУЛИРОВКА ЗАГРУЗКИ

Route::set('default', '(<controller>(/<action>(/<param1>)(/<param2>)(/<param3>)))',
array(
    'param1' => '\d+',
    'param2' => '\d+',
    'param3' => '\d+',
))
->defaults(array(
    'controller' => 'test',
    'action'     => 'index',
));

пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 12 августа 2011

Похоже, что браузер видит что-то вроде этого:

onClick=/param/index.php

Атрибут onClick интерпретируется как JavaScript, а /param/index.php в JavaScript пытается быть литералом регулярного выражения, за которым следует доступ к свойству. Регулярное выражение будет /param/ с модификаторами i, n, d, e и x. i означает сопоставление без учета регистра, чтобы оно проходило; тогда вы получаете ошибку, потому что нет модификатора n для регулярного выражения JavaScript.

Я думаю, вы пытаетесь заставить кнопку действовать как ссылка, поэтому вам нужно добавить несколько цитат и назначение для window.location:

<input type="button" value = "button" onClick="window.location = '<?php echo url::site('test/get'.$x);?>'" />

Это должно приблизить вас к тому, куда вы пытаетесь пойти, или, по крайней мере, преодолеть загадочную ошибку «недопустимый флаг регулярного выражения n».

...