我希望在保存之后从模型中获取最新数据而不进行其他选择.
目前我这样做:
if ($this->Model->save($data)){
$last = $this->Model->find('first',array(
'conditions' => array('Model.id' => $this->Model->id)
);
$last['Model']['dataChangedByBehaviors']; // <-- data I want
}
Run Code Online (Sandbox Code Playgroud)
我希望获得在模型回调或行为中设置的任何数据,而不执行额外的查找.
我一直在使用 Thomas J. Bradley 的 jQuery Signature Pad 插件来捕获绘制的签名,并且效果很好。我想做的还允许输入签名,如演示中所示,但让它输出与绘制签名(JSON 表示)相同的数据。
由于数据输出是光标在画布上移动时的实际坐标,我猜测它必须模拟鼠标或触摸移动。我找到了另一个关于在画布上绘制文本的 Stackoverflow 答案。有没有办法模拟绘制文本的跟踪?如果是这样,这可能是一种解决方案。
我放弃了原来的计划。
由于我的最终目标是无论使用键入的签名还是绘制的签名都获得相同的输出,因此我决定使用提供的getSignatureImage()方法。但是,该getSignatureImage()方法仅适用于签名的绘制版本。我实现了以下代码来将键入的签名“绘制”到临时画布上:
var canvas = $("canvas").get(0);
var ctx = canvas.getContext("2d");
// signature_name is the id of the input element
var tempCanvasHtml = '<canvas id="temp_canvas" style="display:none;" width="400" height="120"></canvas>';
$(".signature_form").append(tempCanvasHtml);
var tempCanvas = $("#temp_canvas").get(0);
var tempCtx = tempCanvas.getContext("2d");
tempCtx.font = "3.875em/50px 'Journal',Georgia,Times,serif";
tempCtx.fillStyle = '#145394';
tempCtx.fillText($("#signature_name").val(), 5, 90);
var img = tempCanvas.toDataURL("image/png");
tempCanvas.remove();
Run Code Online (Sandbox Code Playgroud)
当签名被接受或提交表单时,我运行此代码。如果签名是绘制的getSignatureImage(),我使用 ,当它输入时,我使用上面的代码。
注意:使用此代码将生成没有画布背景的图像,该插件不支持getSignatureImage(). …