替换从数据库中检索到的字符串 - Laravel&Shopify



我已经创建并注册了我的Shopify Web挂钩,它们运行得很好。当客户下订单时,会向客户发送短信通知。

短信通知内容保存在数据库中,并在触发网络挂钩以发送短信时检索。在数据库中,短信通知内容保存为"感谢您下订单%order_number%">

当短信发送到客户端时,字符串%order_number%应被实际订单号替换为"谢谢您下订单13">

这就是我现在拥有的

控制器

public function orderPlaceWebhook(Request $request)
{
//get order details
$order = $request->getContent();   
$order = json_decode($order, true);
$order_number = $order['number'];
//fetched sms notification template from db
$Message = SMS::where('site', Auth::user()->site);
//message content saved is "Thank you for placing order %order_number%"
//send sms
$baseurl = "https://apps.domain.com/smsapi";
$query = "?key=$keyto=$number&msg=$Message&sender_id=$sender";
$final_uri = $baseurl.$query;
$response = file_get_contents($final_uri);
header ("Content-Type:text/xml");
}

如何将$Message中的字符串%order_number%替换为来自$order_number的值?

附言:提前谢谢。laravel 入门

将模板保留在数据库中是否有特殊原因?使用翻译文件不是更好吗?以后如果你需要支持不同的语言,这会更容易。

所以你可以在翻译文件中有这样的消息:

'sms_template' => 'Thank you for placing order :order'

在Laravel,然后使用

trans('MESSAGE_FILE_NAME.sms_template', ['order' => $order_number]);

用翻译文件替换MESSAGE_FILE_NAME。

如果你仍然需要使用普通的老PHP方式,那么就这样做:

str_replace("%order_number%", $order_number, $Message);

最新更新