.htaccess RewriteRule не работает так, как мне нужно для моей инфраструктуры yii2

Принимаемый ответ показывает слишком сложный способ. Как утверждает Форресто в его ответе , « он, кажется, добавляет их в DOM-проводник, но не на экран », и причиной этого являются разные пространства имен для html и svg.

Простейшим обходным решением является «обновление» всего svg. После добавления круга (или других элементов) используйте это:

$("body").html($("body").html());

Это делает трюк.

Или, если хотите, используйте контейнер div:

$("#cont").html($("#cont").html());

И заверните ваш svg внутри контейнера div:

Функциональный пример: http://jsbin.com/ejifab/1/edit

Преимущества этой техники:

  • вы может редактировать существующие svg (это уже в DOM), например. созданный с использованием Raphael или как в вашем примере «жестко закодированный» без скриптов.
  • вы можете добавить сложные структуры элементов как строки, например. $('svg').prepend('');, как вы делаете в jQuery.
  • после того, как элементы добавлены и сделаны видимыми на экране с помощью $("#cont").html($("#cont").html());, их атрибуты можно редактировать с помощью jQuery.

EDIT:

Вышеупомянутый метод работает с «жестко закодированным» или DOM манипулировал (= document.createElementNS и т. д.) только SVG. Если Raphael используется для создания элементов (согласно моим тестам), связь между объектами Рафаэля и SVG DOM нарушается, если используется $("#cont").html($("#cont").html());. Обходной путь к этому - не использовать $("#cont").html($("#cont").html()); вообще, а вместо него использовать фиктивный документ SVG.

Этот фиктивный SVG является первым текстовым представлением документа SVG и содержит только те элементы, которые необходимы. Если мы хотим, например. чтобы добавить элемент фильтра в документ Рафаэля, манекен может быть чем-то вроде . Текстовое представление сначала преобразуется в DOM с помощью метода jQuery $ ("body"). Append (). И когда элемент (filter) находится в DOM, он может быть запрошен с использованием стандартных методов jQuery и добавлен к основному документу SVG, который создается Raphael.

Почему этот манекен нужен? Почему бы не добавить элемент фильтра строго в созданный документ Рафаэля? Если вы попытаетесь использовать, например. $("svg").append(""), он создается как элемент html, и ничего не отображается на экране, как описано в ответах. Но если весь документ SVG добавляется, то браузер автоматически обрабатывает преобразование пространства имен всех элементов в документе SVG.

Пример иллюстрирует технику:

// Add Raphael SVG document to container element
var p = Raphael("cont", 200, 200);
// Add id for easy access
$(p.canvas).attr("id","p");
// Textual representation of element(s) to be added
var f = '';

// Create dummy svg with filter definition 
$("body").append('');
// Append filter definition to Raphael created svg
$("#p defs").append($("#dummy filter"));
// Remove dummy
$("#dummy").remove();

// Now we can create Raphael objects and add filters to them:
var r = p.rect(10,10,100,100);
$(r.node).attr("filter","url(#myfilter)");

Полная рабочая демонстрация этого метода находится здесь: http://jsbin.com/ilinan/1/edit .

(я еще не знаю, почему $("#cont").html($("#cont").html()); не работает при использовании Рафаэля. Это будет очень короткий взлом.)

0
задан Harshil Dholakiya 22 March 2019 в 13:44
поделиться

1 ответ

=> .htaccess

Options -Indexes

<IfModule mod_rewrite.c>
  RewriteEngine on  
  RewriteCond %{REQUEST_URI} /(uploadImages)
  RewriteRule ^uploadImages/(.*)$ uploadImages/$1 [L]
  RewriteCond %{REQUEST_URI} !^public
  RewriteRule ^backend(.+)?$ backend/web/$1 [L,PT]
  RewriteRule ^(.*)?$ frontend/web/$1 [L]
</IfModule>

# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>
# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]

=> backend / config / main.php

'request' => [
            'baseUrl' => '/backend', //point to your folder directly 
        ],
'urlManager' => [
            'enablePrettyUrl' => true, // hide ?r=site%2Fsignup
            'showScriptName' => false, //hide frontend/web/index.php from URL            
            'rules' => [
                '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
                '<alias:index|>' => 'site/<alias>',
                '<alias:login|logout>' => 'site/<alias>', 
            ], 
        ],
0
ответ дан Rups 22 March 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: