12
12
13
13
namespace Prince \Faq \Observer ;
14
14
15
+ use Magento \Framework \App \Config \ScopeConfigInterface ;
15
16
use Magento \Framework \Event \ObserverInterface ;
16
17
use Magento \Framework \Event \Observer as EventObserver ;
17
18
use Magento \Framework \App \RequestInterface ;
18
19
use Magento \Framework \App \Config \Storage \WriterInterface ;
20
+ use Magento \UrlRewrite \Model \UrlRewriteFactory ;
21
+ use Magento \Store \Model \StoreManagerInterface ;
19
22
20
23
class ConfigChange implements ObserverInterface
21
24
{
25
+ const REQUEST_PATH = 'faq ' ;
26
+
22
27
/**
23
28
* @var RequestInterface
24
29
*/
@@ -28,28 +33,66 @@ class ConfigChange implements ObserverInterface
28
33
* @var WriterInterface
29
34
*/
30
35
private $ configWriter ;
36
+ /**
37
+ * @var UrlRewriteFactory
38
+ */
39
+ private $ urlRewriteFactory ;
40
+ /**
41
+ * @var StoreManagerInterface
42
+ */
43
+ private $ storeManager ;
44
+ /**
45
+ * @var ScopeConfigInterface
46
+ */
47
+ private $ scopeConfig ;
31
48
32
49
/**
33
50
* ConfigChange constructor.
34
51
* @param RequestInterface $request
35
52
* @param WriterInterface $configWriter
53
+ * @param UrlRewriteFactory $urlRewriteFactory
54
+ * @param StoreManagerInterface $storeManager
55
+ * @param ScopeConfigInterface $scopeConfig
36
56
*/
37
57
public function __construct (
38
58
RequestInterface $ request ,
39
- WriterInterface $ configWriter
59
+ WriterInterface $ configWriter ,
60
+ UrlRewriteFactory $ urlRewriteFactory ,
61
+ StoreManagerInterface $ storeManager ,
62
+ ScopeConfigInterface $ scopeConfig
40
63
) {
41
64
$ this ->request = $ request ;
42
65
$ this ->configWriter = $ configWriter ;
66
+ $ this ->urlRewriteFactory = $ urlRewriteFactory ;
67
+ $ this ->storeManager = $ storeManager ;
68
+ $ this ->scopeConfig = $ scopeConfig ;
43
69
}
44
70
45
71
public function execute (EventObserver $ observer )
46
72
{
47
73
$ faqParams = $ this ->request ->getParam ('groups ' );
48
- $ faqUrlVal = $ faqParams ['seo ' ]['fields ' ][ ' faq_url ' ][ ' value ' ] ;
49
- if ($ faqUrlVal ) {
50
- $ urlKey = str_replace (' ' , '- ' , $ faqUrlVal );
74
+ $ faqUrlVal = $ faqParams ['seo ' ]['fields ' ];
75
+ if (key_exists ( ' faq_url ' , $ faqUrlVal) ) {
76
+ $ urlKey = str_replace (' ' , '- ' , $ faqUrlVal[ ' faq_url ' ][ ' value ' ] );
51
77
$ filterUrlKey = preg_replace ('/[^A-Za-z0-9\-]/ ' , '' , $ urlKey );
52
78
$ this ->configWriter ->save ('faqtab/seo/faq_url ' , $ filterUrlKey );
79
+ $ storeId = $ this ->storeManager ->getStore ()->getId ();
80
+ $ faqUrl = $ this ->scopeConfig ->getValue (
81
+ 'faqtab/seo/faq_url ' ,
82
+ \Magento \Store \Model \ScopeInterface::SCOPE_STORE ,
83
+ $ storeId
84
+ );
85
+ $ urlRewriteModel = $ this ->urlRewriteFactory ->create ();
86
+ $ rewritecollection = $ urlRewriteModel ->getCollection ()
87
+ ->addFieldToFilter ('request_path ' , self ::REQUEST_PATH )
88
+ ->addFieldToFilter ('store_id ' , $ storeId )
89
+ ->getFirstItem ();
90
+ $ urlRewriteModel ->load ($ rewritecollection ->getId ());
91
+ $ urlRewriteModel ->setStoreId ($ storeId );
92
+ $ urlRewriteModel ->setTargetPath ($ faqUrl );
93
+ $ urlRewriteModel ->setRequestPath (self ::REQUEST_PATH );
94
+ $ urlRewriteModel ->setredirectType (301 );
95
+ $ urlRewriteModel ->save ();
53
96
}
54
97
return $ this ;
55
98
}
0 commit comments