Хорошо, Компонент Формы действительно довольно сложный. Существует три типа данных во время обработки формы - данные модели, нормализованные данные и данные просмотра. И дополнительно для события PRE_SUBMIT
есть данные запроса.
В зависимости от того, о каком событии мы говорим, могут быть другие данные, передаваемые слушателю события. В соответствии с документацией Form Component :
FormEvents::PRE_SUBMIT
событие имеет данных запроса FormEvents::SUBMIT
событие имеет нормализованные данные Поэтому, когда вы сбрасываете что-то в данных запроса в PRE_SUBMIT
, это как если бы оно никогда не передавалось в форму. Но это не значит, что они не будут присутствовать в данных модели / нормализованных / представлений после обработки этих данных по умолчанию . Преобразователи данных .
Трудно дать вам точное решение, потому что это зависит от того, чего вы хотите достичь. Но я могу сказать, что если вы хотите изменить способ обработки данных, вам, вероятно, следует использовать Data Transformers вместо Form Events.
Настройка:
Вы можете использовать редактор групповой политики, чтобы установить этот сценарий в качестве сценария запуска. См. http://technet.microsoft.com/en-us/library/cc739591 (WS.10) .aspx для получения дополнительной информации.
REM @echo off
REM setlocal ENABLEDELAYEDEXPANSION
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 100 /so AttachEbsBoot /d "Starting attach-ebs-boot.cmd"
REM local variables
REM Make sure you include the directory with curl.exe and the EC2 command line tools in the path
set path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Utils;C:\ebin\ec2\bin
set JAVA_HOME=c:\java
set EC2_HOME=c:\ebin\ec2
set EC2_CERT=<your_cert>
set EC2_PRIVATE_KEY=<your_private_key>
REM Please note: you should use the Ec2 Config Serive Settings application to ensure
REM that your EBS volume is mapped to a particular drive letter.
REM
REM edit as needed
set EBS_DRIVE=P:
set EBS_DEVICE=xvdp
REM Test to see if the drive is already attached. If it is then we're done.
if exist %EBS_DRIVE%\nul (goto done)
REM get the EBS volume ID from the user data and the instance ID from the meta-data
for /f "delims=" %%a in ('curl http://169.254.169.254/latest/user-data') do (set EBS_VOLUME=%%a)
for /f "delims=" %%b in ('curl http://169.254.169.254/latest/meta-data/instance-id') do (set INSTANCE_ID=%%b)
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 102 /so AttachEbsBoot /d "Volume == %EBS_VOLUME%"
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 103 /so AttachEbsBoot /d "Instance == %INSTANCE_ID%"
REM attach the volume
REM
REM Use a series of set command to build the command line
SET COMMAND_LINE=%EBS_VOLUME%
SET COMMAND_LINE=%COMMAND_LINE% -i
SET COMMAND_LINE=%COMMAND_LINE% %INSTANCE_ID%
SET COMMAND_LINE=%COMMAND_LINE% -d
SET COMMAND_LINE=%COMMAND_LINE% %EBS_DEVICE%
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 104 /so AttachEbsBoot /d "calling ec2attvole %COMMAND_LINE%"
call ec2attvol.cmd %COMMAND_LINE%
:DONE
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 101 /so AttachEbsBoot /d "Exiting attach-ebs-boot.cmd"
REM Events logged in the System event log
REM source === AttachEbsBoot
REM
REM Event 100 - Script start
REM Event 101 - Script end
REM Event 102 - Volume ID
REM Event 103 - Instance ID
REM Event 104 - Command line for ec2attvol
Я нашел следующий код Ruby в любезности http://www.ioncannon.net/system-administration/199/automounting-amazon-ebs-volumes-on-ec2-instances/ Carson McDonald. Это для Linux/Unix, но возможно Вы можете re-swizzle это для Ruby в Windows 2003 или иметь его, служат моделью для того, чтобы сделать его в некотором другом языке сценариев.
Обратите внимание, что Вы могли передать вещи в свое изображение как пользовательские данные, такие как идентификатор объема EBS ECS и имя устройства (например,/dev/sdh в следующем примере или независимо от того, что это будет в Windows для Вашего случая). Можно получить доступ к пользовательским данным из самого экземпляра как метаданные, как примерно сделан ниже для получения идентификатора экземпляра. Строго говоря, Вы получили бы доступ к http://169.254.169.254/1.0/user-data для получения до пользовательских данных.
#!/usr/bin/ruby
require 'rubygems'
require 'right_aws'
require 'net/http'
url = 'http://169.254.169.254/2008-02-01/meta-data/instance-id'
instance_id = Net::HTTP.get_response(URI.parse(url)).body
AMAZON_PUBLIC_KEY='your public key'
AMAZON_PRIVATE_KEY='your private key'
EC2_LOG_VOL='the volume id'
ec2 = RightAws::Ec2.new(AMAZON_PUBLIC_KEY, AMAZON_PRIVATE_KEY)
vol = ec2.attach_volume(EC2_LOG_VOL, instance_id, '/dev/sdh')
puts vol
# It can take a few seconds for the volume to become ready.
# This is just to make sure it is ready before mounting it.
sleep 20
system('mount /dev/sdh /mymountpoint')