質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

2回答

2691閲覧

ECCUBE3のプラグイン修正

ateshi

総合スコア6

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2017/03/26 14:34

編集2017/03/27 03:18

###前提・実現したいこと
冷蔵便・冷凍便拡張プラグインDeliveryCoolにて
冷蔵便・冷凍便の商品に対して、購入ページにて
その冷蔵便・冷凍便がいくらなのか表示したい

当方phpは簡単な通販サイト構築程度の知識はありますが
silex,symphonyは理解しておりません。
ECCUBE3.0.13で上記に記載ある有料のプラグインをカスタマイズしようとしております。
プラグイン中のphpで冷凍便か冷蔵便の判断をし、フラグを付けたはいいものの、本体のtwigでその変数を判断するためにはどうすればいいのかわかりません。

###該当のソースコード

public function createTwig(TemplateEvent $event) { $app = $this->app; print "kook"; $parameters = $event->getParameters(); $Order = $parameters['Order']; $BaseInfo = $app['eccube.repository.base_info']->get(); $shippingDeliveryFeeTotal = 0; $productDeliveryFeeTotal = 0; $maxShippingFee = 0; $maxRegularFee = 0; $Shippings = $Order->getShippings(); foreach ($Shippings as $Shipping) { $checkDelivType = $app['eccube.deliverycool.service.util']->getShippingTypes($Shipping); foreach ($checkDelivType as $shippingType => $coolShipmentItems) { $shippingType = $app['eccube.deliverycool.service.util']->convertShippingType($shippingType); $deliveryFee = $Shipping->getDeliveryFee(); $fee = 0; if($deliveryFee){ $fee = $deliveryFee->getFee(); } $addFee = 0; if($shippingType == 1){ $coolFee = $app['eccube.deliverycool.repository.delivery_cool_fee']->findOneBy(array('Delivery' => $Shipping->getDelivery(), 'Pref' => $Shipping->getPref())); if($coolFee){ $addFee = $coolFee->getCoolFee(); } //冷凍便 $shippingType == 2 }elseif($shippingType == 2){ $coldFee = $app['eccube.deliverycool.repository.delivery_cold_fee']->findOneBy(array('Delivery' => $Shipping->getDelivery(), 'Pref' => $Shipping->getPref())); if($coldFee){ $addFee = $coldFee->getColdFee(); } } if ($maxShippingFee < ($fee + $addFee)) $maxShippingFee = ($fee + $addFee); if ($maxRegularFee < $fee) $maxRegularFee = $fee; $Shipping->setShippingDeliveryFee($fee + $addFee); $shippingDeliveryFeeTotal += ($fee + $addFee); $shipping_cold = 0; //echo $shipping_cold ; if (!is_null($BaseInfo->getOptionProductDeliveryFee()) && $BaseInfo->getOptionProductDeliveryFee() == Constant::ENABLED) { foreach($coolShipmentItems as $coolShipmentItem){ $productDeliveryFeeTotal = $coolShipmentItem->getProductClass()->getDeliveryFee() * $coolShipmentItem->getQuantity(); } } } } $isFree = false; $deliveryFreeAmount = $BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { if ($Order->getSubTotal() >= $deliveryFreeAmount) { $isFree = true; } } $deliveryFreeQuantity = $BaseInfo->getDeliveryFreeQuantity(); if (!is_null($deliveryFreeQuantity)) { if ($app['eccube.service.order']->getTotalQuantity($Order) >= $deliveryFreeQuantity) { $isFree = true; } } if(!$isFree && $app['eccube.deliverycool.service.util']->checkInstallPlugin('CustomerRank','1.2.2')){ $isFree = $app['eccube.customerrank.service.util']->checkDeliveryFree($Order); } if(!$isFree && $app['eccube.deliverycool.service.util']->checkInstallPlugin('DeliveryFreeProduct','1.0.2')){ $isFree = $app['eccube.deliveryfreeproduct.service.util']->checkDeliveryFree($Order); } if($isFree){ $method = $app['eccube.deliverycool.service.util']->getConfig('method'); if($method == 1){ $shippingDeliveryFeeTotal -= $maxShippingFee; }elseif($method == 2){ $shippingDeliveryFeeTotal -= $maxRegularFee; }else{ $shippingDeliveryFeeTotal = 0; $productDeliveryFeeTotal = 0; } } $deliveryFeeTotal = $productDeliveryFeeTotal + $shippingDeliveryFeeTotal; $Order->setDeliveryFeeTotal($deliveryFeeTotal); $total = $Order->getSubTotal() + $Order->getCharge() + $Order->getDeliveryFeeTotal(); $Order->setTotal($total); $Order->setPaymentTotal($total); $Order->setSippingType($shipping_cold); $parameters['Order'] = $Order; $event->setParameters($parameters); $plgBaseinfo = $app['eccube.deliverycool.repository.base_info']->get(); if($plgBaseinfo->getValue() == Constant::DISABLED){ $source = $event->getSource(); if(preg_match('/\{%\sif\sBaseInfo\.optionMultipleShipping\s%\}/',$source, $result)){ $search = $result[0]; $replace = '{% if BaseInfo.optionMultipleShipping != '. Constant::ENABLED .'%}'; $source = str_replace($search, $replace, $source); } $event->setSource($source); } }

この中の$shippingTypeをtwigに渡したい。
twigはeccube本体のshoppingのindex.twigです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xenbeat

2017/03/26 15:38

プラグインのプログラム、そしてそのどこの画面(twig)でどのようなアクション(controller)をした時に、そのように表示させたいのかわからないので回答が難しいです。該当するプログラムをコード形式で記載してください
ateshi

2017/03/27 02:18

ご回答ありがとうございます。 他に必要なことあればまた返信下さいませ。 プラグインのソース public function createTwig(TemplateEvent $event) { $app = $this->app; print "kook"; $parameters = $event->getParameters(); $Order = $parameters['Order']; $BaseInfo = $app['eccube.repository.base_info']->get(); $shippingDeliveryFeeTotal = 0; $productDeliveryFeeTotal = 0; $maxShippingFee = 0; $maxRegularFee = 0; $Shippings = $Order->getShippings(); foreach ($Shippings as $Shipping) { $checkDelivType = $app['eccube.deliverycool.service.util']->getShippingTypes($Shipping); foreach ($checkDelivType as $shippingType => $coolShipmentItems) { $shippingType = $app['eccube.deliverycool.service.util']->convertShippingType($shippingType); $deliveryFee = $Shipping->getDeliveryFee(); $fee = 0; if($deliveryFee){ $fee = $deliveryFee->getFee(); } $addFee = 0; if($shippingType == 1){ $coolFee = $app['eccube.deliverycool.repository.delivery_cool_fee']->findOneBy(array('Delivery' => $Shipping->getDelivery(), 'Pref' => $Shipping->getPref())); if($coolFee){ $addFee = $coolFee->getCoolFee(); } //冷凍便 $shippingType == 2 }elseif($shippingType == 2){ $coldFee = $app['eccube.deliverycool.repository.delivery_cold_fee']->findOneBy(array('Delivery' => $Shipping->getDelivery(), 'Pref' => $Shipping->getPref())); if($coldFee){ $addFee = $coldFee->getColdFee(); } } if ($maxShippingFee < ($fee + $addFee)) $maxShippingFee = ($fee + $addFee); if ($maxRegularFee < $fee) $maxRegularFee = $fee; $Shipping->setShippingDeliveryFee($fee + $addFee); $shippingDeliveryFeeTotal += ($fee + $addFee); $shipping_cold = 0; //echo $shipping_cold ; if (!is_null($BaseInfo->getOptionProductDeliveryFee()) && $BaseInfo->getOptionProductDeliveryFee() == Constant::ENABLED) { foreach($coolShipmentItems as $coolShipmentItem){ $productDeliveryFeeTotal = $coolShipmentItem->getProductClass()->getDeliveryFee() * $coolShipmentItem->getQuantity(); } } } } $isFree = false; $deliveryFreeAmount = $BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { if ($Order->getSubTotal() >= $deliveryFreeAmount) { $isFree = true; } } $deliveryFreeQuantity = $BaseInfo->getDeliveryFreeQuantity(); if (!is_null($deliveryFreeQuantity)) { if ($app['eccube.service.order']->getTotalQuantity($Order) >= $deliveryFreeQuantity) { $isFree = true; } } if(!$isFree && $app['eccube.deliverycool.service.util']->checkInstallPlugin('CustomerRank','1.2.2')){ $isFree = $app['eccube.customerrank.service.util']->checkDeliveryFree($Order); } if(!$isFree && $app['eccube.deliverycool.service.util']->checkInstallPlugin('DeliveryFreeProduct','1.0.2')){ $isFree = $app['eccube.deliveryfreeproduct.service.util']->checkDeliveryFree($Order); } if($isFree){ $method = $app['eccube.deliverycool.service.util']->getConfig('method'); if($method == 1){ $shippingDeliveryFeeTotal -= $maxShippingFee; }elseif($method == 2){ $shippingDeliveryFeeTotal -= $maxRegularFee; }else{ $shippingDeliveryFeeTotal = 0; $productDeliveryFeeTotal = 0; } } $deliveryFeeTotal = $productDeliveryFeeTotal + $shippingDeliveryFeeTotal; $Order->setDeliveryFeeTotal($deliveryFeeTotal); $total = $Order->getSubTotal() + $Order->getCharge() + $Order->getDeliveryFeeTotal(); $Order->setTotal($total); $Order->setPaymentTotal($total); $parameters['Order'] = $Order; $event->setParameters($parameters); $plgBaseinfo = $app['eccube.deliverycool.repository.base_info']->get(); if($plgBaseinfo->getValue() == Constant::DISABLED){ $source = $event->getSource(); if(preg_match('/\{%\sif\sBaseInfo\.optionMultipleShipping\s%\}/',$source, $result)){ $search = $result[0]; $replace = '{% if BaseInfo.optionMultipleShipping != '. Constant::ENABLED .'%}'; $source = str_replace($search, $replace, $source); } $event->setSource($source); } } この中の$shippingTypeをtwigに渡したい。 twigはeccube本体のshoppingのindex.twigです。
CHERRY

2017/03/27 02:30

追記欄やコメント欄は、インデントや改行が消えるので、コードは質問を編集して、コードブロックで囲んで追記してください。コードブロックの作成方法は、コードを選択して「<code>」ボタンを押すか コードの前後を「```」(バッククオート3個)だけの行で囲んで改行をいれてください。
ateshi

2017/03/27 03:18

すいません記述しなおしました。
guest

回答2

0

自己解決

他のphpファイルを見ていたら解決いたしました。

$parameters['shipping_cold'] = $shipping_cold;

これでtwigに値を渡せました。

投稿2017/03/27 07:54

ateshi

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MVCフレームワークであれば、フラグの値をビュー(この場合はtwig?)に渡してあげる必要があると思うのですが
(配列等に含まれるなら取り方の問題かもしれません)

投稿2017/03/26 22:57

yuki84web

総合スコア1857

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ateshi

2017/03/27 02:20

ご回答ありがとうございます。 その渡し方がよく理解していなくて…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問